Čo je určujúci faktor, kedy nastane zmena v číslovaní? Odkiaľ ten stĺpec vie že má meniť pri pridaní riadku za 1 v tomto prípade:
1, 2, 2a
na toto
1, 1a, 2, 2a
alebo toto
1, 2, 3, 3a
alebo
1, 2, 2a, 2b
???
To čo spomínate v dotaze je, že PQ má zistiť názov súboru - sám seba. Podľa toho "Políčko/hledat". Meno/umiestnenie seba samého asi PQ priamo nevie zistiť.
To čo hovoríte následne zase vyzerá, akoby ste mal nejaký riadiaci/analyzačný súbor s PQ dotazom, a každý mesiac do neho načítaval iný súbor. Exportovaný z nejakého SW. To je niečo iné, lebo v PQ nastavte cestu k adresáru, kde budú tie súbory. V PQ vhodným filtrom (napr. v názve je dátum, tak najnovší) načítate len jeden, a jeho meno si uchováte.
To je tipovačka. Treba bližšie info a prílohu.
Urobil som si pole reťazcov - názvov stĺpcov.
Môžem dať aj
Stlpy = Array("D", "G", "H", "I", "J", "K")ale potom musí byť deklarácia ako Variant
Dim Stlpy()a volanie doplnené o CStr()
Spracuj_Stlpec CStr(Stlpy(i))
inak funkcia Split predsa rozdeľuje reťazec na základe rozdeľovača.
Reťazec "D,G,H,I,J,K" je 1. parameter funkcie.
Oddeľovač "," je 2. parameter funkcie.
A parametre sú oddelené čiarkou.
To je fuk aký si dám oddeľovač textu, napr. aj medzeru
Stlpy = Split("D G H I J K", " ")
Iba stĺp D a K? Tomu neverím, skúšal som to. Dajte si BreakPoint (klik na ten sivý zvislý pásik vľavo vedľa kódu) na tom riadku so Select, tam sa Vám makro pri každom priechode pozastaví. Uvidíte.
Robil by som to tiež radšej Offset-om ako marjankaj. Tam sa menia tie stĺpce posúvaním prvého o "i" stĺpcov, a to v prípade ak sa nejedná o i=1 alebo i=2 (čo sú nechcené stĺpce E a F. Proste posúva sa oblasť D4:D200 o "i" stĺpcov vpravo.
Jednoducho parametrom. Toto je najjednoduchší príklad.
Sub Spracuj_Stlpec(Stlpec As String)
Range(Stlpec & "4:" & Stlpec & "200").Select
End Sub
Sub Makro_makricko()
Dim Stlpy() As String, i As Integer
Stlpy = Split("D,G,H,I,J,K", ",")
For i = 0 To UBound(Stlpy)
Spracuj_Stlpec Stlpy(i)
Next i
End Sub
Alebo priamo v cykle.
Každopádne keď vidím, že tam máte Select, tak to makro asi nebude optimalizované, však ?
Napr.:
Excel.CurrentWorkbook(){[Name="názov Tabuľky s menom súboru"]}[Content]{0}[Názov stĺpca v Tabuľke s menom súboru]
Tak pokus. Vyrobil som si súbor pre import s 20K riadkami, DB som zaplnil tiež 20K. Asi 25 ID sa tam nenachádzalo. Trvanie cca 5 sek. Pôvodne som existenciu ID prebehol cez Evaluate vzorcom, ale na 20K to je brzda, preto je tam vyhľadávacie kolekcia.
Importované data následne makrom mažem, kvôli duplicite a veľkosti súboru.
Vzhľadom na množstvo ďalších neopisovaných stĺpcov mám ale dojem, že také "ľahké" to asi nebude.
Tu máte video.
PowerQuery:
Data z webu, zdroj je
https://docs.google.com/spreadsheets/d/{id_google_tabulky}/export?format=xlsx&id={id_google_tabulky}
kde
{id_google_tabulky}
je ID Google Tabuľky zo zdieľaného odkazu.
V prvom rade je treba vzorec upraviť na CZ/SK formát oddeľovačov parametrov, a potom si myslím, že nie je dobré pridávať na koniec čísla, nedá to správny výsledok ak text číslo neobsahuje. Takže by som to upravil na maticový vzorec (Ctrl+Shift+Enter):
=MIN(IFERROR(FIND({0;1;2;3;4;5;6;7;8;9};B3);FALSE))
=MIN(IFERROR(NAJÍT({0;1;2;3;4;5;6;7;8;9};B3);NEPRAVDA))
Nezobrazia? Teda fungujú, ale nevidíte ich kód? Alebo ani nefungujú a zároveň ich ani nevidíte? Excel upozorňuje na makrá v súbore? Záložku Vývojár máte aktivovanú? Makrá sú teda povolené? Súbor je to XLSM? ...
Nieje niektorý stĺpec prázdny? Najlepšie by bolo priložiť prílohu (bez citlivých dát) ale s prejavujúcou sa chybou, a uviesť na ktorej bunke pri tom stojíte.
Myslím, že opäť bude problém v určovaní správnej oblasti (CurrentRegion).
Mne to na E2019 funguje. Skúste to, čo sa spomína tu. Pozrieť chýbajúce referencie, skontrolovať správne deklarácie všetkých premenných, zmeniť to Right na VBA.Right. Je to iba pár vecí, Chrome Vám to preloží.
O čo má tomu textboxu ísť? O to aby tam bol zadaný iba dátum? Aby nedovolilo napísať iné znaky ako 0-9 a / ?
Problém je evidentne ten, že to nie sú XLS súbory. To sú normálne textové súbory, len majú príponu XLS. No a v tom prípade sa Excel snaží automaticky určiť dátový typ. A ak sa pozriete kedy toto spotvorenie čísel nastane a kedy nie, tak si všimnete, že ak textočíslo obsahuje oddeľovač tisícov " " (medzera), tak to interpretuje správne podľa EU, ale ak tam medzera nieje, a je tam iba desatinná čiarka, tak ju podľa EN identifikuje ako oddeľovač tisícov, teda logicky pridá "000". Ako tak na to pozerám, asi by bolo lepšie použiť PQ. No jednoduché to nebude.
EDIT 19.7.2021 17:47
A aby som iba netliachal. Tu máte PQ súhrn, bez makra, iba dáte "Obnoviť všetko" na karte "Údaje". No funguje to iba na tie Vaše XLS (ktoré nimi niesú). Na normálne XLS/XLSX/XLSM to fungovať nebude. Tam by bolo treba v PQ vymyslieť ešte nejaký test či sa jedná o skutočný Excel súbor alebo tento Váš CSV premenovaný na XLS, a podľa toho zvoliť načítavaciu rutinu. Dátová štruktúra XLS a CSV je neporovnateľne iná.
...
A tie údaje v F potrebujete, alebo si ich má makro spočítať samé?
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.