Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  17 18 19 20 21 22 23 24 25   další » ... 298

Urobil som verziu cez vyhľadávanie v Collection. 100000 vyhľadávaní v ďalších 100000 riadkoch spracuje aj výpisom priebehu, konverziou stringov na čísla za cca 6-7 sekúnd. Problémom je vyfarbovanie. A to je ohromný časový problém. Zakomponoval som zložité kontroly a čiastkové zafabovanie po častiach. Potom to ide celkom dobre. Keď privriem oči, tak čo % to sekunda. Dôrazne neodporúčam pri vygenerovaní 100000 riadkov (na to je tam makro, aby nebola veľká príloha) odpovedať NIE na otázku, či má vyfarbovať po krokoch. Ide to ako raketa. Obmedzujú to len farby...
Ešte poriadne pochopiť tie podmienky...

Prvý nástrel len prasácky poupravované (zdôrazňujem prasácky) a povynechávané. Snáď to robí čo má. Niektoré tie podmienky som vôbec nepobral, tak som ich ponechal. Všetko, čo sa dalo, je cez polia.
Vyskúšajte.

Viac nemám čas. Všetci zdúchli, a tak idem nachystať na tajnáša nejaké Vianočné veci. Ale psst, nie že to tu rozkecáte ... 5

Ak to bude funkčné, tak to poupravujem, aj nejaký popis dodám.
PS: Inak prílohy ste dal presne také ako som nechcel. Nie je vidno, či niekde nie sú vzorce. Dalo by sa pre zjednodušenie preplácnuť všetky dáta (aj nemenené), bolo by menej polí...

EDIT:
Dnes som si to ráno vyskúšal, a Match je nedostatočný. Použijem Collection - mnohonásobne rýchlejšie hľadanie. Nachádzajú sa v prehľadávanom súbore duplicitné materiály?

EDIT2:
Tak sa snažím pochopiť tie Vaše podmienky... No, dobré by asi bolo, začať od začiatku, a to vysvetlením, čo to má robiť a za akých podmienok. Napr. ak dôjde k výpočtu (lebo je číslo a nie text) a zároveň pri výpočte dôjde k zmene očerveň, inak zachovaj pôvodnú farbu/ zmaž akúkoľvek farbu. Atď.
To makro je celé? K čomu potom toto?
Case existingPrice = 0
If calculatedPrice = 0 Then
End If

V tomto riadku
ElseIf existingPriceValue = 0 Or existingPrice = "no info" Or InStr(existingPrice, "*") And calculatedPrice <> 0 Then
sa zbytočne testuje
Or existingPrice = "no info"
lebo nikdy nenastane, pretože to je v bloku
Case IsNumeric(existingPrice)
Ďalej priložte takú prílohu, kde bude 1 riadok z každej eventuality, ktorá sa môže vyskytnúť, aj s jeho požadovaným výsledkom včetne farby (kedy ma červená vzniknúť, zaniknúť, ponechať).
text, číslo, farba, "*", "no info", "AT mat", ...
Desatinné čísla v stĺpci G neprevádzate na skutočné čísla. Ostávajú ako text. To sa má asi previesť, nie?

Presne ako vraví Milan. To treba celé prerobiť. Zapísať 10000 zbytočných buniek v poli (to isté na svoje miesto) je určite rýchlejšie ako 1000 buniek po jednej. Sú tam zbytočné podmienky (alebo makro nie je celé). Duplicitné operácie
wsJG.Cells(i, "G").Value = Replace(wsJG.Cells(i, "G").Value, "EUR", "")
robí predsa to isté s tou istou hodnotou ako toto
euroPrice = Replace(euroPrice, "EUR", "")
Vyfarbenie nerobiť po jednom, ale chystať si spoločnú Range a vyfarbiť naraz.
Prestupovanie medzi Excelom a makrom je pomalé, a preto neustále
wsVer1.Cells(j, 10)
spomaľuje
...

Prílohy, kde bude pár dát, s rovnakým usporiadaním, vzorcami, formátmi a pod, ako máte v reále. Anonymizované ale kde niečo je tak to tam nechajte len zmeňte. Nemažte napr. hlavičky.

Uvidíme...

pr.

Ak ide len o počet riadkov, ktoré sú označené (v akomkoľvek stĺpci) a zároveň viditeľné, stačí
pocet = Intersect(Selection.Parent.Columns(1), Selection.EntireRow).Cells.Count
Ale o to asi nepôjde.

Čo myslíte pod pojmom "pole"? Skutočný VBA Array()? Alebo oblasť buniek? Čo znamená naplniť hodnotami? Akými? Konštantou? Každá je variabilná a počítaná? Zložitosť a týchlosť zápisu bude záležať na množstve vecí. Napr. či sú zapisované stĺpce pri sebe alebo ob-stĺpce, či sú medzi hodnotami vzorce a pod. Čo predstavuje "poleHodnot(idx,0)"?

Musíte to podstatne upresniť, ideálne pomocou anonymizovanej prílohy formou súboru Excelu, kde bude znázornené čo máte, a manuálne vytvorené aj to čo má po úprave vzniknúť + popis podmienok, výpočtov dopĺňaných hodnôt a pod. V prílohe ale musíte zachovať štruktúru a formáty. Ak je niekde vzorec, nechajte ho tam. Je to dôležité napr., ak chcete hromadne zapisovať do viacerých nesúvislých stĺpcov/riadkov, tak sa dá použiť namiesto niekoľkonásobných zápisov, jeden, kde sa aj prepíšu nemenené hodnoty tými istými. Kvôli rýchlosti. To ale nie je celkom možné, ak sú tam vzorce.

Som zatiaľ len na mobile, tak zatiaľ len rada.
Musíte použiť najskôr cyklus
For Each ARE in Selection.EntireRow.Areas
A potom
For Each RIADOK in ARE.Rows
If Not RIADOK.Hidden Then

Alebo
...SpecialCells(xlCellTypeVisible)

Sakriš, LAMBA a MAP nemám, škoda, nevyskúšam.

Na tú fotku máme použiť AI ? 5

To je na figu, lebo som si vlastne nevšimol, že "xxxOstrava-sever,stará," nezačína veľkým písmenom.

Kriste, čo je toto za systém, takto dementný export...

Nič iné ma nenapadá.

EDIT:
Ak by ste v tom zozname "Potřebuji odstranit" mali presné celé texty na odstránenie, tak by to možno šlo. Zabezpečilo by sa aby bola dočasne na začiatku aj konci "," a nahrádzal by sa vždy text ","&text&",".

Neviem, no, treba si nájsť a určiť nejaké pravidlá...

No lenže Vy keď chcete odstrániť "Praha-východ", tak sa musí odstrániť ",Praha-východ,-kopie" alebo "Praha-východ,-kopie,", ale aj "Praha-východ," alebo ",Praha-východ". To je problém, že nie je zaručené, že text za čiarkou nepatrí ešte k predchádzajúcemu mestu.

Takže ma napadá, že jediným identifikátorom rozdeliteľnosti textu na skutočné celé znenia miest, je ",X" - teda čiarka nasledovaná veľkým písmenom. Je to tak?

Ak áno, môžem Vám na to urobiť makro.

=INDEX($5:$5;LARGE(IF(T6:AA6=MIN(T6:AA6);COLUMN(T6:AA6);FALSE);1))
=INDEX($5:$5;LARGE(KDYŽ(T6:AA6=MIN(T6:AA6);SLOUPEC(T6:AA6);NEPRAVDA);1))


1. vzorec je SK
2. vzorec je CZ

Takže to najmenšie číslo v riadku, sa bude v riadku vyskytovať iba raz? Ak viackrát, má sa vypísať sektor, kde sa najmenšia hodnota vyskytla ako prvá zľava->doprava?
=INDEX(T$5:AA$5;MATCH(MIN(T6:AA6);T6:AA6;0))
=INDEX(T$5:AA$5;POZVYHLEDAT(MIN(T6:AA6);T6:AA6;0))

Hmm, no ja myslím že nie. Tiež by sa mi to už pár krát šiklo...

V makre je na testovacie účely tento riadok
If Not DEL Is Nothing Then WS.Activate: DEL.Select, ktorý iba označí bunky. Pre istotu. Skontrolujte si, či to sedí.

Ak je to to, čo ste chcel, tak tento riadok zmažte (alebo deaktivujte pridaním apostrofu na začiatok) a aktivujte ten mazací riadok za ním (vymazaním apostrofu na začiatku)
If Not DEL Is Nothing Then DEL.ClearContents

Dáta sú od 1. riadku? Nie je tam hlavička? Jedná sa o obyč. tabuľky alebo sú to objekty Tabuľky (ListObject)? Mená máte v nejakom zozname, voči ktorému ma prebehnúť kontrola, alebo iba všeobecná kontrola porovnávaním text->text? Rozdiel je ohromný, pri zozname sa skontroluje najskôr existencia v zozname až potom prehľadáva listy. Naopak pri text-text sa prehľadávajú hneď dáta v listoch. Názvy mesiacov sú vždy v CZ? Sú dáta filtrované?


Strana:  1 ... « předchozí  17 18 19 20 21 22 23 24 25   další » ... 298

Uživatelské menu

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

Menu

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