< návrat zpět

MS Excel


Téma: "SVYHLEDAT" ve VBA rss

Zaslal/a 7.1.2019 10:10

Dobrý den
potřebuji poradit jak vyřešit následující:
V textovém "pseudo xml" souboru hledám položku <stat> + </stat>.

např.
<dat1>4.12.2015</dat1>
<dat2>412</dat2>
<stat>566, 663, 344</stat>
<dat3>koleda</dat3>
<dat5>velikonoce, vanoce, silvestr</dat5>

položky se zapisují do tabulky (kousek kodu)

strData = načtený soubor

....
strDat1 = Split(Split(strData, "<dat1>") (1), "</dat1>") (0)
.Range("A" & Rows.Count).End(xlUp).Offset(0,1) = strDat1
....


Problém je, že potřebuji do tabulky zapsat zkratky států nikoliv čísla.
Převodní tabulka (testovací) je přiložena (list2).
Jak to elegantně provést? Dala by se použit vlastní fce s využitím Case Select,
ale 250 převodů se mi opravdu nechce vypisovat a to ještě nemusí být konečné číslo.
Díky za pomoc.

Příloha: xlsx42322_stat.xlsx (19kB, staženo 33x)
Zaslat odpověď >

Strana:  1 2   další »
#042326
avatar
podla prikladu presne netusim co potrebujete

ale pre pracu s XML je dobre pouzivat referenciu "Microsoft XML v3.0"

tam ked nacitate stranku/txt/xml tak uz je jednoducho sa pohybovat po xml strukture

pre lepsie znazornenie pozrite prilohu:
Příloha: zip42326_42322_stat.zip (23kB, staženo 29x)
citovat
#042328
avatar
Odkaz na SVYHLEDAT...

WorksheetFunction.VLookup

nebo lépe

Application.VLookupcitovat
#042329
avatar
to Palooo
nezduraznil jsem to, ale nejde o XML soubor, nejde s ním takto pracovat. Proto ho zpracovávám jako TXT.
v proměnné strDat1 mám uloženo 566, 663, 344 a do tabulky potřebuji zapsat písmena podle tabulky, kterou jsem přiložil.

to Darbujan
Díky, podívám se na to...citovat
#042330
avatar
Application.VLookup - dobrá nápověda :-)
Obecně: jak nejelegantneji rozdělit obsah proměnné strStat= 566, 663, 344 na jednotlivá čísla, která pak použiju ve fci Application.VLookup?
Ve strStat může být jednou číslo až několik, jistý je pouze oddělovač "čárka"citovat
#042331
avatar

GeorgeK napsal/a:

Application.VLookup - dobrá nápověda :-)
Obecně: jak nejelegantneji rozdělit obsah proměnné strStat= 566, 663, 344 na jednotlivá čísla, která pak použiju ve fci Application.VLookup?
Ve strStat může být jednou číslo až několik, jistý je pouze oddělovač "čárka"


A co myslíte, že dělá ten váš Split(...)(0)?
strStat = "566,663,344"
arrStat = Split(strStat, ",")
arrStatPrvni = CInt(arrStat(0))

Musíte toho ale zvládat víc...
- Split funguje pro min. 2 položky, tj. předem otestuje výskyt oddělovače přese InStr(...)>0
- převod řetězcově uvedeného čísla na skutečné číslo pro účely vyhledávání přes CInt na jednoltivých položkáchcitovat
#042335
elninoslov
Priložte aj ten textový súbor. Takéto textopiplačky som mal kedysi rád :)citovat
#042337
avatar

elninoslov napsal/a:

Priložte aj ten textový súbor. Takéto textopiplačky som mal kedysi rád :)

Díky, testovací texty přiloženy.
Příloha: zip42337_text.zip (4kB, staženo 26x)
citovat
#042338
avatar

Darbujan napsal/a:

A co myslíte, že dělá ten váš Split(...)(0)?
strStat = "566,663,344"
arrStat = Split(strStat, ",")
arrStatPrvni = CInt(arrStat(0))

Díky za nakopnutí, někdy člověk kouká moc daleko a nevidí špičku boty.. :-)citovat
icon #042340
eLCHa
@Darbujan

- Split funguje pro min. 2 položky, tj. předem otestuje výskyt oddělovače přese InStr(...)>0

Nemusíte testovat.Sub test()
Dim strStat As String
strStat = "566"
Dim arrStat() As String
arrStat = Split(strStat, ",")
End Sub
vytvoří pole arrStat(0 to 0) ;)citovat
#042341
avatar
Beru zpět, eLCHa má pravdu, není potřeba testovat, pole zde bude fungovat i pro jednu položku.citovat

Strana:  1 2   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

odpocet a storno tl.

PavDD • 28.3. 8:53

odpocet a storno tl.

Začátečník • 26.3. 14:39

odpocet a storno tl.

PavDD • 26.3. 10:22

odpocet a storno tl.

elninoslov • 26.3. 7:50

odpocet a storno tl.

PavDD • 26.3. 7:26

odpocet a storno tl.

elninoslov • 25.3. 22:34

odpocet a storno tl.

Začátečník • 25.3. 15:09