Potrebuji poradit, existuje nejaka funkce, ktera je schopna zamenit vice znaku v bunce za jine? Konkretne potrebuji konvertovat hexa cisla napr. C3B1 na 3CD8. Vzdy je jasne dano, jak se znaky prohodi (0<->0, 1<->8, 2<->4, 3<->C, ...) A nemuzu jet pres Najit a nahradit, protoze neodfiltruju, ktere znaky uz se prohodily a ktere ne. Samozrejme muzu jit pres mezikrok, nejdriv si to namapovat na G, H, I, atd. a pak to prevest na pozadovany vysledek, ale zajimalo by me jestli existuje neco elegantnejsiho pres nejakou funkci.
A chces nahrazovat? Neni lepsi puvodni nechat a prevedene (pomoci funkce ve VBA napr.) zobrazit ve vedlejsi bunce? Konverzi udelas pres pole, kde budou 2 stringy - najit a nahradit treba0123084ca pak je to zalezitost jednoducheho cyklu. MP
Samozrejme ze je mi jedno, jestli nahradim nebo vysledek bude v jine bunce radku. Mam proste 1000 radku hexadecimalnich cisel typu 0C F0 6A 31 2B nebo 0F 4D 92 33 5E a ty potrebuju zmenit podle urceneho klice. Ve VBA sem nikdy nedelal, tudiz o tom vim kulovy.
=DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(A1;0;"g");1;"h");2;"i");3;"j");4;"k");5;"l");6;"m");7;"n");8;"o");9;"p");"A";"q");"B";"r");"C";"s");"D";"t");"E";"u");"F";"v");"g";"0");"h";"8");"i";"4");"j";"C");"k";"2");"l";"7");"m";"A");"n";"5");"o";"1");"p";"9");"q";"6");"r";"D");"s";"3");"t";"B");"u";"F");"v";"E")Sice… je to taková prasárna vzorec, ale funguje. Nejprve nahradit v buňce A1 znaky 0-F písmeny g-v a pak nahradit g-v těmi potřebnými. Ukázat celý příspěvek
3 způsoby1. řetězení funkce dosadit=SUBSTITUTE(SUBSTITUTE(A1, "old_text1", "new_text1"), "old_text2", "new_text2")2 roztrhat textový řetězec na znaky (funkce zleva), nahradit znaky a opět složit do textového řetězce (funkce concat)3. pomocí vbas vba ti může pomoc copilot, např, zadej how to substitute more characters at once in excel vbahttps://pastebin.com/SHrkzehg
Urob zameny taketo: Nie 2 => 4, ale trochu iny retazec, o ktorom vies, ze je to stvorka, ale aj nie je... 2 => "stvorka". Tak sa Ti nestane, ze nahradenu 4-ku budes znovu nahradzat na 2.4 => "dvojka"3 => "cecko"C => "trojka"...A na konci, po vsetkych zamenach len vratis slova:"stvorka" => 4"dvojka" => 2"cecko" => C"trojka" => 3...
DIk za rady, holt se tomu mezikroku G, H, I, ... nevyhnu.
Dej sanci VBA, je to tupy cyklus. Na netu najdes vzory. Treba takto (bez kontrol atd atd)Function PrekladZnaku(InputString As String) As String Dim i As Integer Const SrcChars = "1234567890" Const DstChars = "2134567890" Dim TmpS As String Dim OutS As String OutS = "" For i = 1 To Len(InputString) TmpS = Mid(InputString, i, 1) If InStr(1, SrcChars, TmpS, vbBinaryCompare) > 0 Then TmpS = Mid(DstChars, InStr(1, SrcChars, TmpS, vbBinaryCompare), 1) OutS = OutS & TmpS Next i PrekladZnaku = OutSEnd FunctionMP
Vyzkousim uvidim. 🙂
A musí to být nutně v Excelu? Možná by spíš pomohl Notepad++ a podobné editory.
Nemusi to bejt v excelu, kdysi davno bych si na to napsal program v C, ale to uz je pres 20 let, co sem to umel.
Ak si robil pred 20 rokmi v C, tak to je ako vcera. Ja som robil v C pred 33 rokmi. To sa nezabuda, je to ako bicykel alebo auto...Skus na pracu so stringami Python. Je celkom fajn.https://www.geeksforgeeks.org/how-to-search-...in-python/Vela zdaru. 🙂
Potvrďte prosím přezdívku, kterou jsme náhodně vygenerovali, nebo si zvolte jinou. Zajistí, že váš profil bude unikátní.
Tato přezdívka je už obsazená, zvolte prosím jinou.