< návrat zpět

MS Excel


Téma: VBA - průvodce importem textu rss

Zaslal/a 23.10.2021 21:22

ahojte, dovolím se na vás obrátit, protože už si nevím rady a vždy jste mi ochotně a suprově pomohli. Mám asi 3 tisíce textových souborů, ze kterých potřebuju vytáhnout nějaký data. Mám k tomu vytvořenej excel, kde první list je sumarizace dat z těch TXT souborů, do druhé listu vždycky přes import textu nakopíruju textovej soubor. Nevím ale jak zautomatizovat import textu (ze schránky), tak aby oddělovač byla mezera, a oddělovač destinných míst je ".". Mám představu, že po spuštění makra se vymažou sloupce A až P, pak se zaktivní buňka A1 a provede se import textu. Když se pak přepnu do listu Summary, tak tam vidím data. Problém je v tom, že když to zkouším záznamem makra, tak oddělovač není mezera, ale vše je v jedné buňce. Příklady viz. příloha.

Budu vděčný za jakékoliv nápady.
Díky moc, Dalibor

Příloha: zip51376_test.zip (73kB, staženo 16x)
Zaslat odpověď >

Strana:  « předchozí  1 2 3 4   další »
#051408
avatar
ahojte,

snažím se to pochopit, ale teď je to asi nad moje síly a nechci vás zdržovat hloupými dotazy, tak bych vás jako odborníky požádal asi o poslední úpravu souboru. Pro kompletní statistiku bych potřeboval přidat ještě tři sloupce:

1. číslo zařízení (je to první dvojčíslí z batch - příklad .... 37211028, tak číslo zařízení je 37
2. Datum - ten se vypočítá z batch a je to poslední šestičíslí ve tvaru YYMMDD - příklad 31211028 je 28.10.2021
3. šlo by vložit sloupec, kdy byl soubor změněn? Porovnal bych to pak s datumem a do dalšího sloupce bych vložil jen nějaký znak, pokud by datum z bodu 2. bylo rozdílně od datumu, kdy byl soubor změněn
4. třešnička na dortu by byla, kdyby se z těch batch čísel staly hypertextové odkazy, které by odkazovaly na ty TXT soubory, takže když se ti nebude něco zdát, tak na ten batch klikneš a otevře se ti TXT soubor.

Pochopím, pokud už jste mi věnovali spoustu času, dokážu si to představit, i tak jste mi hrozně moc pomohli, do jednoho souboru jsem dostal data z 22 tisíc souborů, které by se pak daly různě filtrovat.

Lubo, ten tvůj soubor mi nějak nefunguje, občas mi to vyhazuje errory, nebo nenačte celý řádek, ikdyž tam data jsou, nevím proč.

Chlapi díky moc, klidnej svátek 1 1 1 1citovat
#051418
elninoslov
Lubove znalosti a skúsenosti sú obrovské, málokto sa mu tu vyrovná (mňa nevynímajúc). Tieto jeho podnety a príklady som ešte neskúšal. V prvom rade totiž musím pochopiť "wo co tady go". A to sa mi nechce. Radšej (ak bude čas, ako vidieť na mojej absencii)), tak dorobím tie požadované ďalšie 3 stĺpce do môjho riešenia, ktorému rozumiem, a chápem ako fungujú jednotlivé kroky, a prečo som ich tam dal, čo som chcel dosiahnuť.

Bod 4. HT odkazy - to v PQ asi nepôjde.citovat
#051424
avatar
Lubové schopnosti nezpochybňuju, jen mi to nefungovalo a já nejsem schopen přijít na to proč 1 , proto jsem vděčný za každý podnět, který mi ušetří neskutečně hodin práce, resp. ani není v lidských silách zpracovat 22tisíc souborů tímto způsobem v krátkém čase. Pokud se ti nepodaří tam dostat ty hypertextové odkazy, tak se tím nelam, to tam dokážu dostat potom v tabulce přes vzorec. Mě by jen zajímalo, tak jsi rozdělil ten textový soubor na oddíly, které budeš zpracovávat? bylo to ručně v rozšířeném editoru, že jsi napsal kod, nebo to jde nějakým průvodcem? Omlouvám se, že se takto ptám, mám další strukturu souborů, které bych potřeboval vyhodnotit, ikdyž tyto soubory jsou už mnohem mnohem jednoduší než to, čím jste mi vy dva teď tak hrozně pomohly. Nechci vás tady právě obtěžovat pro vás stupidními dotazy, proto se to snažím naučit, ale toho času taky moc nemám 7 .

Jsem vděčný za každý pokrok dopředu.
Díky,

D.

1citovat
#051428
avatar

jaks.dalibor napsal/a:


1. číslo zařízení (je to první dvojčíslí z batch - příklad .... 37211028, tak číslo zařízení je 37


Velmi jednoduché. Stačí ve finální tabulce přidat sloupec. Dá se i vzorcem.

jaks.dalibor napsal/a:


2. Datum - ten se vypočítá z batch a je to poslední šestičíslí ve tvaru YYMMDD - příklad 31211028 je 28.10.2021


Velmi jednoduché. Stačí ve finální tabulce přidat sloupec. Dá se i vzorcem.

jaks.dalibor napsal/a:


3. šlo by vložit sloupec, kdy byl soubor změněn? Porovnal bych to pak s datumem a do dalšího sloupce bych vložil jen nějaký znak, pokud by datum z bodu 2. bylo rozdílně od datumu, kdy byl soubor změněn


Stačí v načtené tabulce ponechat sloupec "Date modified"

#"Odebrané ostatní sloupce" = Table.SelectColumns(#"Filtrované riadky",{"Content", "Date modified"}),
#"Transformovaný sloupec" = Table.TransformColumns(#"Odebrané ostatní sloupce",{"Content", fncGetDataFromFile}),


Je třeba také upravit #"Transformovaný sloupec". V kódu byla aututomaticky vygenerovaná, méně známá syntaxe funkce Table.TransformColumns.

jaks.dalibor napsal/a:


4. třešnička na dortu by byla, kdyby se z těch batch čísel staly hypertextové odkazy, které by odkazovaly na ty TXT soubory, takže když se ti nebude něco zdát, tak na ten batch klikneš a otevře se ti TXT soubor.


Jedině VBA.

jaks.dalibor napsal/a:


Lubo, ten tvůj soubor mi nějak nefunguje, občas mi to vyhazuje errory, nebo nenačte celý řádek, ikdyž tam data jsou, nevím proč.


Já taky nevím proč to hlásí chyby. Je zřejmé, že soubory neodpovídají předpokladům.

Tak aspoň pár tipů, na co se můžeš podívat:

Při načítání souboru nepočítám s uvozovkami - QuoteStyle.None.

Pozice sloupců jsou nastaven podle zaslaných příkladů.

V kroku "#"Vyčištěný text" se ošetřují mezery mezi znaménkem - a číslicí jen ve sloupci "PR03(kPa)". Jinde jsem si toho nevšiml.citovat
#051429
avatar
ahoj Lubo,

díky za odpověď. Zmíněné body 1. a 2. jsem vyřešil ve vyexportované (asi myslíme tu stejnou - finální) tabulce dalším sloupcem a vzorcem. S bodem 3 si zatím nevím rady, zkusím se s tím porvat, byť se to nezdá, tak je to velmi důležitá informace. ten hypertextový odkaz jsem taky už někdy dělal vzorcem, tak s tím se taky snad porvu.

"#"Vyčištěný text" ... mezery mezi znaménkem - a číslicí by mělo být i ve sloupci "PR01(kPa)".

Zkouším se ptát na jednu věc, ale ještě neznám odpověď. To rozdělení tohoto složitějšího textového souboru jste udělali v nějakém průvodci rozdělení textu do sloupců, nebo jste ty zdrojové kódy psali od začátku z hlavy???citovat
#051430
elninoslov
Ten Lubov kód je pre mňa tiež nepochopiteľný 7
PQ je pre mňa okrajová záležitosť. A tie jeho techniky, sila.

Upravil som ten môj podľa požiadaviek.

Tie medzery s mínusmi sú problém min v 2 stĺpcoch
PR03(kPa)
PR01(kPa)
no potom sú bez mínusu napr. v Humidity(%), ale počítal som, že to môže nastať kdekoľvek. Preto som najskôr odstránil akékoľvek spojené medzery, a následne nahradil "- " (mínus a medzera) iba znakom "-", čo mi potom dalo možnosť deliť riadok na stĺpce pomocou zostávajúcich medzier.

Ako sme to robili? Ja osobne neovládam PQ tak dobre ako Lubo (a iný), takže niečo ako vidieť podľa názvov premenných je naklikané v menu PQ, zvyšok som dopísal ručne. Nevadí, že neviem, ako sa presne píše syntax danej funkcie (pozor - navyše CaseSensitive), veď máme Google. Ak chcem napr. text zľava, vygooglim si "power query left" a dozviem sa, že funkcia sa nevolá Text.Left ale Text.Start ...
Veľa vecí som si ale pospájal v jednom riadku, je to neprehľadnejšie, ale nenaskrolujem sa toľko.

Ale aj tak musíte mať trochu programátorské myslenie.
Příloha: xlsx51430_data-pq.xlsx (34kB, staženo 8x)
citovat
#051431
avatar
ahojte,

tak na doporučení Luba jsem dodělal 4 sloupce (bez hypertextového odkazu). Vůbec netuším, jestli jsem to dělal správně, bylo to děláno přes přidávání sloupců a tak dlouho jsem si hrál s funkcemi, až mi to házelo správná data, viz. příloha.

Co pořád nevím, jak na začátku rozdělit ten text. V příloze posílám jednodušší příklad TXT souboru, jaký je prosím postup na rozdělení do těch sloupců. Omlouvám se, že vás tímto zdržuji, ale asi se to nemám jak jinak naučit.

Díky moc 1
D.
Příloha: zip51431_downloads.zip (37kB, staženo 9x)
citovat
#051432
elninoslov
Ja by som dal tie prvé riadky takto, ale netuším čo chcete s tým potom robiť.
(*** POZOR v riadku s Table.ReplaceValue fórum maže viaceré medzery za sebou. Postupne sa nahrádza 5,4,3,2 medzier !)
File = Csv.Document(File.Contents(FileName),[Encoding=65001, QuoteStyle=QuoteStyle.None]),
#"Nahradená hodnota" = Table.ReplaceValue(Table.ReplaceValue(Table.ReplaceValue(Table.ReplaceValue(File," "," ",Replacer.ReplaceText,{"Column1"})," "," ",Replacer.ReplaceText,{"Column1"})," "," ",Replacer.ReplaceText,{"Column1"})," "," ",Replacer.ReplaceText,{"Column1"}),
TextFromFile = Table.ReplaceValue(#"Nahradená hodnota","- ","-",Replacer.ReplaceText,{"Column1"}),

//vytvorenie tabuľky dát
#"Filtrované riadky" = Table.SelectRows(TextFromFile, each Text.StartsWith([Column1], "Date") or Text.StartsWith([Column1], "> ")),
#"Nahradená hodnota4" = Table.ReplaceValue(#"Filtrované riadky","> ","",Replacer.ReplaceText,{"Column1"}),
#"Rozdeliť stĺpec podľa oddeľovača" = Table.SplitColumn(#"Nahradená hodnota4", "Column1", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5"}),
#"Hlavičky so zvýšenou úrovňou" = Table.PromoteHeaders(#"Rozdeliť stĺpec podľa oddeľovača", [PromoteAllScalars=true]),
#"Zlúčené stĺpce" = Table.CombineColumns(#"Hlavičky so zvýšenou úrovňou",{"Date", "Hour"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"DateHour"),
#"Zmenený typ4" = Table.TransformColumnTypes(#"Zlúčené stĺpce",{{"DateHour", type datetime}}),
#"Zmenený typ pomocou miestneho nastavenia" = Table.TransformColumnTypes(#"Zmenený typ4", {{"T_Set", type text}, {"T_Eff", type number}, {"T_Rec", type number}}, "en-US"),
...

Inak ten hypertextový odkaz je predsa jednoduchý. K Tabuľke (v Exceli, nie v PQ) pridáte stĺpec so vzorcom. Buď ako 1. alebo ako posledný stĺpec. Podľa toho, či chcete mať iba Batch číslo (ktoré pravdepodobne nakoniec nebude číslo ale znaky), alebo názov súboru, alebo celú cestu, a pod. Použije sa napr. skrytý stĺpec, ktorý PQ vyplní, a vzorec sa iba odkáže na súbor z tohto stĺpca. Je to jednoduché, ale nebudem opäť meniť PQ dotaz, pokým nedáte ako PRESNE má vyzerať výsledok. Už sú to 3 strany s jednou úpravou za druhou. Uznajte sám, že takéto dávkovanie požiadaviek je ako "Neverending Story" - a to je na nervy 6 ...

Píšem to stále dookola v každom treťom vlákne - priložte manuálne vytvorenú požadovanú formu výsledku. Teda nielen pokusy s nesprávnymi výsledkami, formátmi a pod, ale aj to čo chcete dosiahnuť. Podľa toho riešiteľ ľahšie a rýchlejšie zistí, čo má byť výsledok.

EDIT:
Moment, musím priložiť prílohu s osekaným PQ, lebo fórum maže viaceré medzery za sebou ...
Příloha: xlsx51432_51388_data-pq-kopie.xlsx (45kB, staženo 8x)
citovat
#051433
elninoslov
Príklad na hyperlink
Příloha: xlsx51433_data-pqhl.xlsx (35kB, staženo 9x)
citovat
#051434
avatar

elninoslov napsal/a:

Je to jednoduché, ale nebudem opäť meniť PQ dotaz, pokým nedáte ako PRESNE má vyzerať výsledok. Už sú to 3 strany s jednou úpravou za druhou. Uznajte sám, že takéto dávkovanie požiadaviek je ako "Neverending Story" - a to je na nervy ...

Píšem to stále dookola v každom treťom vlákne - priložte manuálne vytvorenú požadovanú formu výsledku. Teda nielen pokusy s nesprávnymi výsledkami, formátmi a pod, ale aj to čo chcete dosiahnuť. Podľa toho riešiteľ ľahšie a rýchlejšie zistí, čo má byť výsledok.



už mnohokrát jsem se omluvil, že ještě potřebuju něco upravit. Na začátku jsem vůbec netušil, co všechno se s Power Query dá udělat, proto jsem původní design netušil. I z tohoto důvodu jsem přidával sloupce jako požadavek 1 . Kód je již hotový, teď se snažím jen pochopit, jak jste to udělali, protože návody, co jsou na internetu mi nefungují. Když daný textový soubor natáhnu přes PQ, tak mám zobrazené pouze první tři sloupce a zbytek se mi nedaří rozklíčovat, abych to potom třeba i v kódu upravil.

Rozumím, že tři strany jsou tohoto topicu dost a je třeba se věnovat i jiným 1 , tak to berme jako uzavřené téma, já se bud pokoušet se zbylými dvěma typy textových souborů nějak pohrát, přinejhorším to nedotáhnu do konce.

Díky oběma za cenné rady 1 ,
D.citovat

Strana:  « předchozí  1 2 3 4   další »

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21