Makro, ktoré to urobí jednorázovo na 500 000 riadkoch (len multiplykovaný zoznam obcí) pod 10 s (u mňa 6,5 s) aj so StatusBar-om.
Celý 4,7 MB súbor s 500 000 riadkami je na GoogleDrive.
Makro?
Ale nezabúdajte, že v makre sú definované pozície riadkov a stĺpcov, teda nemôžete len tak mírnix-tírnix meniť pozície tabuliek. Rovnako je potrebné dbať na to, aby pod názvami v stĺpci B v liste "tabulka A", a rovnako za názvami v riadku 4 na liste "tabulka B", neboli žiadne data. Je to určujúci stĺpec pre načítanie dát, a riadok pre mazanie predchádzajúcich.
Opakujem sa po stý krát - makrá sú takmer vždy špecializované. Zadajte presné požiadavky, alebo nič bez rozmyslu nemente.
A nevedel by ste niekto na to zložiť pattern pre RegExp? To nedávam, tak neviem, či by to šlo.
Pomocou kolekcie a poľa.
No chlapi neviem, nedarí sa mi to veru rozbehať...
PS: @marjankaj: Z hľadiska podmienok zadávateľa, že má vybrať texty s iným znakom ako písmeno, nieje nič na "Komarno" zle. No z hľadiska nápravy názvov od mepexg-a na správne názvy, je to samozrejme zle - bez dĺžňa :)
Ako prosím dostanem do Office ten "FuzzyNestedJoin" ?
Predpokladám, že je to súčasť Power BI for Desktop. Dá sa to stiahnuť bez registrácie ?
EDIT: Aha, tak asi toto
https://powerbi.microsoft.com/en-us/desktop/
idem skúsiť
Či chápem správne:
-Doplnte si tabuľku v liste "tabulka A"
-Označte si v liste "tabulka B" posledný stĺpec výsledkov (teraz G3:G35)
-Potiahnite vzorce doprava o toľko stĺpcov, koľko máte navyše riadkov v liste "tabulka A" (teraz o 2, kokosovy a slivkovy).
Alebo vzorcom. Stĺpec A sú texty, a do B dať toto, natiahnuť na šírku, koľko stĺpcov potrebujete:
=TRIM(MID(SUBSTITUTE($A1;CHAR(10);REPT(" ";LEN($A1)));(COLUMN(A1)-1)*LEN($A1)+1;LEN($A1)))
=PROČISTIT(ČÁST(DOSADIT($A1;ZNAK(10);OPAKOVAT(" ";DÉLKA($A1)));(SLOUPEC(A1)-1)*DÉLKA($A1)+1;DÉLKA($A1)))
Ak by vadilo prečistenie medzier, tak sa môže použiť iný pa-znak napr "•"...
=SUBSTITUTE(MID(SUBSTITUTE($A1;CHAR(10);REPT("•";LEN($A1)));(COLUMN(A1)-1)*LEN($A1)+1;LEN($A1));"•";"")
=DOSADIT(ČÁST(DOSADIT($A1;ZNAK(10);OPAKOVAT("•";DÉLKA($A1)));(SLOUPEC(A1)-1)*DÉLKA($A1)+1;DÉLKA($A1));"•";"")
Tak ono Vám to rozdelí aj obyčajné - Data - Text do stĺpcov - a ako oddeľovač zvoliť ľavý Alt+010. Akurát budete mať všetky stĺpce, nielen prvé 3.
Ak by to bolo malé množstvo obrázkov prijateľnej veľkosti, dalo by sa možno uvažovať aj o prepojení obrázku - bez makra.
OR/NEBO je tam predsa zbytočne.
=IF(WEEKDAY(D7;2)>5;"";"1.0")
=KDYŽ(DENTÝDNE(D7;2)>5;"";"1.0")
alebo ak chcete použiť stĺpec E, tak
=IF(E7>5;"";"1.0")
=KDYŽ(E7>5;"";"1.0")
Použite vedľajší stĺpec na takúto odrbávku:
https://www.youtube.com/watch?v=oHtVmvqgZEM
Vzorec sa potom ale už stáva neprehľadným megavzorcom. Asi by pomohlo ho rozdeliť do Definovaných názvov...
Tak vyskúšajte
Criteria2:="=" & Range("A1").Value
Meníte adresovanie stĺpcov, lebo máte relatívne adresovanie. Pri kopírovaní prvého vzorca doprava, meníte oblasti zdrojových dát. Dajte absolútne adresovanie stĺpcov "$", a použite len jeden dotaz na natiahnutie všetkého "*", namiesto dotazu pre každý stĺpec zvlášť.
=QUERY({OMS!$A2:$I500;OI!$A2:$I500;OEAM!$A2:$I500;OCrAI!$A2:$I500} ; "select * WHERE Col1 IS NOT NULL")
Kopírovanie formátu podľa mňa nepôjde, určite nie cez SQL dotaz (či čo to je). Ale Google Tabs nepoužívam, tak možno niekto múdrejší ...
PS: alebo takto načítate aj názvy stĺpcov, nemusia byť nad tým manuálne vyplnené
=QUERY({OMS!$A1:$I500;OI!$A1:$I500;OEAM!$A1:$I500;OCrAI!$A1:$I500} ; "select * WHERE Col1 IS NOT NULL";1)
Odkaz
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.