excel: načtení dat z *.txt
- lelekdk
- Začátečník
- Registrován: 03. črc 2009
- Bydliště: Brno
excel: načtení dat z *.txt
Zdravím,
vstupní problém:
chtěl bych načíst textový soubor, který obsahuje čísla a jediný oddělovací znak je mezera. Textový soubor nemá jednotné formátování čísel (číslo v řádku 1 může být ve sloupečku 5 a číslo v řádku 2 odpovídající předchozímu číslu může být ve sloupečku 6 - to je způsobeno právě tím, že jediný oddělovač je mezera)
ukázka čísel v *.txt souboru:
Prvním úkolem je načíst *.txt soubor do excelu a pak pomocí maker upravit formátování dat a následně excel převést do CSV (středník)
formátování buněk v sešitu nastavím jako text a v dokumentu pro načtení jako externí reference nastavím všechny sloupečky jako text a po načtení textového dokumentu zruším odkaz na referenci.
Po načtení *.txt dokumentu dostanu:
dobré je, že se vše opravdu všechny čísla načtou jako text (obsah buňky je hned po načtení osazen na levé straně jako text)
trošku horší už je to, že na začátku některých čísel chybí nuly tedy "001" se převede jako "1" atd.
Potřeboval bych poradit, jak správně načíst *.txt soubor, tak aby se nevynechali u některých čísel nuly.
Díky mnohokrát.
vstupní problém:
chtěl bych načíst textový soubor, který obsahuje čísla a jediný oddělovací znak je mezera. Textový soubor nemá jednotné formátování čísel (číslo v řádku 1 může být ve sloupečku 5 a číslo v řádku 2 odpovídající předchozímu číslu může být ve sloupečku 6 - to je způsobeno právě tím, že jediný oddělovač je mezera)
ukázka čísel v *.txt souboru:
Prvním úkolem je načíst *.txt soubor do excelu a pak pomocí maker upravit formátování dat a následně excel převést do CSV (středník)
formátování buněk v sešitu nastavím jako text a v dokumentu pro načtení jako externí reference nastavím všechny sloupečky jako text a po načtení textového dokumentu zruším odkaz na referenci.
Po načtení *.txt dokumentu dostanu:
dobré je, že se vše opravdu všechny čísla načtou jako text (obsah buňky je hned po načtení osazen na levé straně jako text)
trošku horší už je to, že na začátku některých čísel chybí nuly tedy "001" se převede jako "1" atd.
Potřeboval bych poradit, jak správně načíst *.txt soubor, tak aby se nevynechali u některých čísel nuly.
Díky mnohokrát.
c# Kozel zahradníkem
- lelekdk
- Začátečník
- Registrován: 03. črc 2009
- Bydliště: Brno
Re: excel: načtení dat z *.txt
přikládám ještě ukázku části textového souboru s čísly:
kdyby někdo nechtěl z nějakých důvodů stahovat *zip, tak možno si jen zkopírovat níže uvedená čísla do vlastního textového souboru:
kdyby někdo nechtěl z nějakých důvodů stahovat *zip, tak možno si jen zkopírovat níže uvedená čísla do vlastního textového souboru:
Kód: Vybrat vše
518 815 824 876 560 857 867 918 810 1 107 1 117 1 168
532 838 846 903 575 880 888 945 834 1 139 1 147 1 204
585 897 904 964 628 940 947 1 007 893 1 205 1 212 1 272
650 977 982 1 049 693 1 020 1 024 1 092 973 1 300 1 304 1 372
664 998 1 002 1 074 706 1 041 1 044 1 116 994 1 329 1 332 1 404
730 1 074 1 075 1 153 773 1 116 1 118 1 195 1 069 1 412 1 414 1 492
1 084 1 550 1 538 1 681 1 126 1 592 1 581 1 724 1 502 1 968 1 956 2 099
2 036 2 764 2 720 3 005 2 079 2 806 2 762 3 047 2 683 3 410 3 366 3 651
Nemáte oprávnění prohlížet přiložené soubory.
c# Kozel zahradníkem
- lelekdk
- Začátečník
- Registrován: 03. črc 2009
- Bydliště: Brno
Re: excel: načtení dat z *.txt
tohle by mohla být celkem dobrá poznámka, při načítání *.txt souboru používám typ souboru: Windows (ANSI). (zkusím i jiné typy souboru testovat)
c# Kozel zahradníkem
- Pishpunta
- Nováček
- Registrován: 25. led 2016
Re: excel: načtení dat z *.txt
Chápu správně, že mezera je v souboru oddělovač čísel a zároveň oddělovač tisíců?
Naimportoval bych celý řádek vždy do jedné buňky a potom v makru si s celým řádkem pohrál, funkce Split ti rozdělí řádek na jednotlivá čísla a pak si je makrem zase spojíš, jak potřebuješ.
Bude potřeba určit nějaká pravidla, kdy je mezera oddělovač tisíců a kdy oddělovač čísel.
Například něco takového (použito na ukázce):
Naimportoval bych celý řádek vždy do jedné buňky a potom v makru si s celým řádkem pohrál, funkce Split ti rozdělí řádek na jednotlivá čísla a pak si je makrem zase spojíš, jak potřebuješ.
Bude potřeba určit nějaká pravidla, kdy je mezera oddělovač tisíců a kdy oddělovač čísel.
Například něco takového (použito na ukázce):
Kód: Vybrat vše
Sub Zpracuj()
Dim S, R As String
Dim L() As String
For i = 1 To 8
S = Range("A1").Cells(i, 1)
L = Split(S)
R = L(0)
For j = 1 To UBound(L)
If Len(L(j - 1)) = 1 Then 'když předchozí číslo je délky 1, spoj ho s následujícím (je to pravděpodobně oddělovač tisíců)
R = R + L(j)
Else: R = R + ";" + L(j)
End If
Next j
Range("A1").Cells(i, 2) = R
Next i
End Sub
- lelekdk
- Začátečník
- Registrován: 03. črc 2009
- Bydliště: Brno
Re: excel: načtení dat z *.txt
Díky moc. Ušetřilo mi to ranec času.
jinak už jsem přišel také na to, proč se mi převedla některá "čísla" na čísla a ne na text.
Ono totiž import dat z textu do excelu přes Excel průvodce importem textu je uživatelsky fucking friendly.
nejen, že není možné scrolovat myší v tom náhledu dat, ale hlavně tam nejsou zobrazeny všechny sloupečky (facepalm). Takže je třeba ručně myší popojet až dolů pro zobrazení zbytku sloupečků, které je pak možné nastavit jako text a pak je vše už OK. Škoda, že také nejde vybrat všechny sloupečky a provést hromadnou úpravu.
Buď jak buď, s tím makrem to bylo rychlejší a bezpečnější, ještě jednou díky
jinak už jsem přišel také na to, proč se mi převedla některá "čísla" na čísla a ne na text.
Ono totiž import dat z textu do excelu přes Excel průvodce importem textu je uživatelsky fucking friendly.
nejen, že není možné scrolovat myší v tom náhledu dat, ale hlavně tam nejsou zobrazeny všechny sloupečky (facepalm). Takže je třeba ručně myší popojet až dolů pro zobrazení zbytku sloupečků, které je pak možné nastavit jako text a pak je vše už OK. Škoda, že také nejde vybrat všechny sloupečky a provést hromadnou úpravu.
Buď jak buď, s tím makrem to bylo rychlejší a bezpečnější, ještě jednou díky
c# Kozel zahradníkem
- Zivan
- Začátečník
-
- Registrován: 30. čer 2005
- Bydliště: Brno
- Kontaktovat uživatele:
Re: excel: načtení dat z *.txt
To je nejaka skolni uloha? Protoze to makro funguje jen pokud jsou cisla mensi nez 10 000. A navic bude spojovat cisla < 10, ktere jsou za sebou.
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W
- lelekdk
- Začátečník
- Registrován: 03. črc 2009
- Bydliště: Brno
Re: excel: načtení dat z *.txt
jsem si makro upravil tak, aby to spojovalo i 10k a doplnil další okrajové podmínky. V tom dokumentu je i nějaká hlavička (String nebo Integer), jiný první sloupec (String) atd. Zase nemůžu chtít, aby někdo řešil celý problém za mě.
Jinak se jedná o rozsáhlé ceníky starších výrobků (mám pouze takto nevhodně v *.txt souboru), které chci přeházet do excelu, v excelu upravit a pak dále s nimi pracovat ve vlastní aplikaci (c#).
Jinak se jedná o rozsáhlé ceníky starších výrobků (mám pouze takto nevhodně v *.txt souboru), které chci přeházet do excelu, v excelu upravit a pak dále s nimi pracovat ve vlastní aplikaci (c#).
c# Kozel zahradníkem
- Zivan
- Začátečník
-
- Registrován: 30. čer 2005
- Bydliště: Brno
- Kontaktovat uživatele:
Re: excel: načtení dat z *.txt
Jestli sis ho upravil, tak OK. Pak uz me napada jen mozny problem s limitem na radky, do verze 2003 umel Excel jen 65 tisic radku, od verze 2007 uz umi pres milion.
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W