Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  286 287 288 289 290 291 292 293 294   další » ... 302

Neviem, ako ste to poriešili, ale ak by ešte niekto mal záujem, tak asi takto by to mohlo byť:
Sub ClearZeroRows()
Dim PR As Long, Pole(), i As Long, Zero As Range
PR = Cells(Rows.Count, 1).End(xlUp).Row
If PR < 2 Then Exit Sub
Pole = Range("A2:B2").Resize(PR - 1).Value
For i = LBound(Pole) To UBound(Pole)
If Pole(i, 1) = 0 And Pole(i, 2) = 0 Then
If Zero Is Nothing Then Set Zero = Rows(i + 1) Else Set Zero = Union(Zero, Rows(i + 1))
End If
Next i
If Not Zero Is Nothing Then Zero.EntireRow.Delete
End Sub


EDIT: A ak by bolo potrebné celé riadky nemazať, napr. kvôli iným dátam vedľa tabuľky, tak potom takto:
Sub ClearZeroRows2()
Dim PR As Long, Pole(), i As Long, NonZero(), NZ As Long
PR = Cells(Rows.Count, 1).End(xlUp).Row
If PR < 2 Then Exit Sub
Pole = Range("A2:C2").Resize(PR - 1).Value
ReDim NonZero(1 To UBound(Pole), 1 To 3)
For i = LBound(Pole) To UBound(Pole)
If Pole(i, 1) <> 0 Or Pole(i, 2) <> 0 Then
NZ = NZ + 1
NonZero(NZ, 1) = Pole(i, 1)
NonZero(NZ, 2) = Pole(i, 2)
NonZero(NZ, 3) = Pole(i, 3)
End If
Next i
Range("A2:C2").Resize(PR - 1).Value = NonZero
End Sub

Overflow je pretečenie. Prvá chyba je hneď tu :
Set rng = Range("A2:C105" & LastR)
má byť
Set rng = Range("A2:C" & LastR)
alebo
Set rng = Range("A2:C105")
v tomto prípade fnc LastR potom nieje treba

Zmeniť, vyskúšať, dať vedieť. Nech to nemusím nadarmo lúskať a hádať čo by tam mohlo byť ešte zmenené.

Modul s deklaráciou globálnej premennej tam máte, však?

Šmarjá, som nevedel, že je tu taká diskusia a v tichosti som pracoval na "novom" variante. Už ho sem dám, čo už s ním, ostatné návrhy budem (ak vôbec bude čas a chuť) študovať neskôr.
Importuje to rovno do listu s tabuľkou. Žiaľ tabuľka nereflektuje na pridanie riadkov za ňou cez import (do nej cez import nejde vkladať - konflikt), tak sa musí urobiť resize. Ak tam vložím iným spôsobom data (Paste, priradenie poľa), tak to funguje, ale nie import.
Cez pole ma to tiež napadlo, to som chcel skúsiť ako ďalší variant. Proste všetko iba v pamäti a potom Flush (tak ste to tuším čo narýchlo pozerám aj robili).
Je to nastavené na Vaše podmienky (A-AI text data, AJ-AR vzorce). Otestoval som to a +- 114200 riadkov to spraví za 20s. Dočasný list sa nevytvára.
Rozmýšľal som aj nad tým aby to ťahalo rovno XML, to by sme potrebovali náhľad na to XML.

PS: Ešte na konci by bolo treba zmazať riadky, ktoré boli použité. Celé Rows, nie ClearContent. Po ClearContent na 114000 riadkoch je súbor 2,2MB. Po odstránení Rows má 30KB. Snáď by to šlo aj nejako sofistikovanejšie.

Asi takto nejako som to mal na mysli. Musel som použiť vytvorenie a zmazanie pomocného dočasného listu pre import, lebo mi stále nechcelo nastaviť tabuľku do importovanej oblasti a opačne. Možno len treba inak zmazať Connection, ako som sa snažil ja. Takže zatiaľ takto. Je to zatiaľ koncipované len na CSV s jedným stĺpcom (cca 25000 Rows). Pre Vaše potreby to treba upraviť na požadované parametre.

Tu som pridal ešte popis makra.

Aj tak by som sa pre seba pokúsil o zjednodušenie. Na 1 klik.
-vymaže sa tabuľka okrem prvého riadka, a zmení sa jej veľkosť na 1 dátový riadok
-zistíme ktorý CSV (akéhokoľvek názvu) v adresári má najvyšší dátum, to bude asi náš favorit. Ak tam bude vždy len jeden, je to ešte jednoduchšie.
-od druhého riadka sa naimportuje CSV, to by malo zabezpečiť pridanie vzorcov. Do tabuľky importovať totiž nejde. Musí to byť jednorazový import, nie vytvorenie pripojenia, keďže sa názov CSV mení.
-prvý dátový riadok tabuľky zmažeme
-a máme tabuľku o správnom počte riadkov (bez prázdnych na konci), so vzorcami, takže updatneme KT.
-ak by sa všetky stĺpce CSV nevkladali jeden vedľa druhého, ale medzi nimi by bol nejaký stĺpec so vzorcami, tak by sa to muselo urobiť inak.

Uvažujem správne, že by takto bol potrebný len jediný klik, a CSV by sa ani neotváralo, nevkladali by sa hodnoty...?

Teraz neviem, či to správne chápem. Takže to čo som naposledy poslal, je OK, to nechať. A k tomu ešte dorobiť nejaký zoznam čisto len tých linkov na eshop pre tovary, ktoré majú 0 ks, napr. na nový list ?

Upravené. Dodrž aj opačné lomítko vždy tak ako som to tam dal.

Toto ukladanie je podľa mňa iba na účely zálohy, v prípade pádu aplikácie, či výpadku prúdu apod. Robí záložný súbor, z ktorého môžete po následnom štarte obnoviť posledné uložené verzie.
Ak si urobíte pokus, že súbor uložíte klasicky, potom na ňom niečo zmeníte a počkáte nastavený interval a zatvoríte Excel, vypíše, že nieje súbor uložený. Čo je jasná známka toho ako to funguje.
https://support.office.com/cs-cz/article/Automatick%C3%A9-ulo%C5%BEen%C3%AD-a-obnoven%C3%AD-soubor%C5%AF-syst%C3%A9mu-Office-5baa2030-9768-4c6c-8d2a-1e10a8d741b1?ui=cs-CZ&rs=cs-CZ&ad=CZ

Vyskúšaj toto

Tu máš 3 druhy SaveAs.
Len pozor na to, či potrebuješ určite SaveAs a nie náhodou SaveAsCopy ?

No teraz to máš tak nastavené, že po kliku na tovar s nulovým počtom v ListBoxe, sa ti otvorí link priradený k danému tovaru. Len nejde natívne priradiť listboxu kurzor RUKA. Dá sa cez Custom ale to sa mi nechce.
A ak chceš tento hyperlink mať aj priamo v liste (nielen v Listboxe), tak to buď
A) vytvoríš cez pravý klik pri každom tovare
B) urobím ti makro, ktoré to buď urobí jednorázovo, alebo sa nastaví OnChange, že keď zmeníš bunku v stĺpci s linkami, tak automaticky ju zmení na hyperlink. Excel to premení automaticky len keď to píšeš, nie keď to tam vložíš kopírovaním.

K tým počtom by som dospel asi aj takto, ale "nejjednodušší řešení" mi to teda naozaj nepripadá, navyše netuším ako to s tou KT poriešiť.
Snáď by to niekoho mohlo nakopnúť...

??? Takto ???
Čo myslíš tým "HyperLink" ? Internetovú stránku ? Mailový odkaz ?

Len taký návrh. Ak by mohlo byť aj makro, tak je to jednoduché (makro vložiť do listu "Data"):
Sub bActualSize_Click()
Dim RT As Long, CT As Long

'Tu môžeme vykonať import dát od niekiaľ a vložiť ich do Tabuľky DataTab

On Error Resume Next 'Ak je chyba (nieje zaplnený žiadny riadok) pokračuj s 0
RT = ListObjects("DataTab").Range.Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row - 1 'Nájdi počet zaplnených riadkov v Tabuľke DataTab
On Error GoTo 0 'Obnov štandardný odchyt chýb
With ListObjects("DataTab")
CT = .ListRows.Count
If RT <> CT Then 'Ak je rozdiel medzi zaplnenými riadkami a riadkami DataTab
.Resize .Range.Resize(RT + IIf(RT = 0, 2, 1)) 'tak uprav veľkosť tabuľky DataTab podľa zaplnených riadkov
Worksheets("KT").PivotTables("KTTable").PivotCache.Refresh 'a aktualizuj kontingenčnú tabuľku KTTable na liste "KT"
End If
End With
End Sub

Bolo by všetko na jeden klik, jednorázovo. Kedykoľvek potrebuješ aktuálne data, klikneš na tlačítko, a to importuje aktuálne data (to treba do makra samozrejme dorobiť ešte, keďže neviem zdroj), vloží ich do Tabuľky DataTab na liste "Data", a urobí Refresh kontingenčnej tabuľky KTTable na liste "KT". Makrom by sa zabezpečilo aj ponechanie vzorcov v prvom riadku DataTab.


Strana:  1 ... « předchozí  286 287 288 289 290 291 292 293 294   další » ... 302

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje