Zdravím,
prosím o radu. Mám kvantum hodnot, které dále upravuji v PowerQuery v Excelu. Zasekl jsem se v bodě, kdy potřebuji použít nachystané PQ na různé zdroje, kde se liší hodnoty signálů a já potřebuji použít jen část řetězce a nemůžu se odpíchnout od počtu písmen zleva ani zprava - příp. Text.Middle nelze použít.
Příklad:
IO.DIS._CD0xxxxx_SWLH1.SigHW
D_CE0yyyyy.CE0yyyyy_SD
Jde mi o osekání nepotřebných řetězců, aby výsledek vypadal takto:
CD0xxxxx_SWLH1
CE0yyyyy_SD
Díky za každou radu.
Část řetězce Vyřešeno
-
- Tvůrce článků
-
Elite Level 12.5
- Příspěvky: 20362
- Registrován: březen 10
- Pohlaví:
Re: Část řetězce
Můžeš použít vba (vbs).
Kód vypadá takto:
Chceš-li vědět, jak to funguje můžeš ten kód zkopírovat do notepadu a uložit s příponou .vbs. A stačí poklepat. Výsledek pak vypadá takto:
Jak si analogicky změnit druhou podmínku, na to jistě už přijdeš sám.
Kód vypadá takto:
Kód: Vybrat vše
vstup = "IO.DIS._CD0xxxxx_SWLH1.SigHW"
tst = "CD0"
k = Len(vstup)
k = k - 3
For i = 1 To k
If Mid(vstup, i, 3) = tst Then vystup = Mid(vstup, i, 14)
Next
WScript.Echo vystup
Chceš-li vědět, jak to funguje můžeš ten kód zkopírovat do notepadu a uložit s příponou .vbs. A stačí poklepat. Výsledek pak vypadá takto:
Jak si analogicky změnit druhou podmínku, na to jistě už přijdeš sám.
Nemáte oprávnění prohlížet přiložené soubory.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router
-
- Level 2
- Příspěvky: 193
- Registrován: srpen 16
- Pohlaví:
Re: Část řetězce
Použite najväčšiu pýchu PQ a to je, že vysekávací vzorec si vie vytvoriť samo, na základe príkladových hodnôt. Kde to nájdete je na obrázku a riešenie takto vytvoreného vzorca prikladám.
Nemáte oprávnění prohlížet přiložené soubory.
-
- Level 2
- Příspěvky: 180
- Registrován: červen 13
- Pohlaví:
Re: Část řetězce
Napsal jsi co nejde. Pak jsi přidal 2 příklady.
Pokud to jsou všechny hledané signály, pak hledej řetězec. Pokud je toho více, tak napiš, jak poznáš, který kousek textu je ten pravý.
Pokud to jsou všechny hledané signály, pak hledej řetězec. Pokud je toho více, tak napiš, jak poznáš, který kousek textu je ten pravý.
-
- nováček
- Příspěvky: 13
- Registrován: srpen 20
- Pohlaví:
Re: Část řetězce
Název signálu má pevnou strukturu: 8 znaků + podtržítko + označení signálu, které se liší.
Prefix bývá odlišný, suffix bývá odlišný.
Prefix bývá odlišný, suffix bývá odlišný.
-
- Level 2
- Příspěvky: 193
- Registrován: srpen 16
- Pohlaví:
-
- nováček
- Příspěvky: 13
- Registrován: srpen 20
- Pohlaví:
Re: Část řetězce
Může se stát, že prefix ani suffix signál neobsahuje vůbec a je čistý.
MePexG, částečně funguje, díky za něj! Nedaří se mi však sloupec vytvořit tak, abych mohl zdroj libovolně měnit. Musím mít pro každý zdroj sólo přednastavený sloupec. Narazil jsem i na zdroj, kdy mají některé hodnoty prefix i suffix a některé jsou čisté, tzn., že osekáním prefixu a suffixu konkrétních hodnot oddělovačem se mi pokrátí i čisté hodnoty, protože je v obou stejný oddělovač.
MePexG, částečně funguje, díky za něj! Nedaří se mi však sloupec vytvořit tak, abych mohl zdroj libovolně měnit. Musím mít pro každý zdroj sólo přednastavený sloupec. Narazil jsem i na zdroj, kdy mají některé hodnoty prefix i suffix a některé jsou čisté, tzn., že osekáním prefixu a suffixu konkrétních hodnot oddělovačem se mi pokrátí i čisté hodnoty, protože je v obou stejný oddělovač.
-
- Level 2
- Příspěvky: 193
- Registrován: srpen 16
- Pohlaví:
Re: Část řetězce
Stačí do príkladového stĺpca písať požadované hodnoty od tade, kde nevyhovujú požiadavkám šedé vypočítané hodnoty a vzorec sa postupne dopĺňa tak aby vyhovel všetkým Vašim potrebám. Zakaždým po zadaní hodnoty, stačí kontrolovať ďalšie šedé hodnoty a až keď je to OK, potvrdiť pridanie stĺpca.
-
- Level 2
- Příspěvky: 180
- Registrován: červen 13
- Pohlaví:
Re: Část řetězce Vyřešeno
Zkus funkci:
ještě dotaz, který z parametru extrahuje jméno (může se hodit)
Případné další testy si dopiš.
Kód: Vybrat vše
fnNajdiSignal
let
Zdroj = (Signal as text) => let
fnSignal = ( _ ) =>
let
xx = Splitter.SplitTextByDelimiter("_")( _ ),
vysledek = List.Accumulate(xx, [stav = 0, sig = null],
(state, _ ) =>
let
Delka = Text.Length(_),
stav =
if state[stav] = 0 and Delka = 8 then 1
else if state[stav] = 1 and Delka > 0 then 2
else if state[stav] = 2 then 2
else 0,
sig =
if state[stav] = 0 and Delka = 8 then _
else if state[stav] = 1 and Delka > 0 then state[sig] & "_" & _
else if state[stav] = 2 then state[sig]
else null
in [stav = stav, sig = sig]
),
jmeno = if vysledek[stav] = 2 then vysledek[sig] else null
in jmeno,
kousky = Splitter.SplitTextByDelimiter(".")(Signal),
AsiSignal = List.Select(kousky, each Text.Contains(_, "_")),
seznam = List.RemoveNulls(List.Transform(AsiSignal, fnSignal)),
jmenoSignalu = seznam{0}
in
jmenoSignalu
in
Zdroj
ještě dotaz, který z parametru extrahuje jméno (může se hodit)
Kód: Vybrat vše
let
fnSignal = ( _ ) =>
let
xx = Splitter.SplitTextByDelimiter("_")( _ ),
vysledek = List.Accumulate(xx, [stav = 0, sig = null],
(state, _ ) =>
let
Delka = Text.Length(_),
stav =
if state[stav] = 0 and Delka = 8 then 1
else if state[stav] = 1 and Delka > 0 then 2
else if state[stav] = 2 then 2
else 0,
sig =
if state[stav] = 0 and Delka = 8 then _
else if state[stav] = 1 and Delka > 0 then state[sig] & "_" & _
else if state[stav] = 2 then state[sig]
else null
in [stav = stav, sig = sig]
),
jmeno = if vysledek[stav] = 2 then vysledek[sig] else null
in jmeno,
kousky = Splitter.SplitTextByDelimiter(".")(Signal),
AsiSignal = List.Select(kousky, each Text.Contains(_, "_")),
seznam = List.RemoveNulls(List.Transform(AsiSignal, fnSignal)),
jmenoSignalu = seznam{0}
in
jmenoSignalu
Případné další testy si dopiš.
-
- nováček
- Příspěvky: 13
- Registrován: srpen 20
- Pohlaví:
Re: Část řetězce
Super, funguje to. Díky moc!
Kdo je online
Uživatelé prohlížející si toto fórum: CommonCrawl [Bot] a 2 hosti