V programe Excel existujú situácie, keď chceme, aby bol text úplne obrátený alebo ich poradie pomocou kódu VBA. Môžu existovať rôzne požiadavky, ako napríklad extrahovanie obsahu reverzných buniek, obrátené poradie buniek atď.
V tomto článku sa naučíme nasledujúce:
- Ako získať reverzný obsah bunky?
- Ako z bunky získať všetky slová v opačnom poradí?
- Ako obrátiť poradie stĺpcov?
- Ako získať obrátené čísla iba z textu?
- Ako zvrátiť obsah bunky v aktívnej bunke?
Ako získať reverzný obsah bunky?
V programe Excel existuje požiadavka na obrátenie textu alebo čísel v bunkách, napr. „Angličtina“ až „hsilgne“
Nasleduje prehľad údajov pred výstupom:
Nasleduje prehľad požadovaného výstupu v stĺpci B:
Na získanie vyššie uvedeného výstupu musíme pri spustení editora VB vykonať nasledujúce kroky
- Kliknite na kartu Vývojár
- V skupine Kód vyberte položku Visual Basic
- Skopírujte nižšie uvedený kód do štandardného modulu
Funkcia CompleteReverse (rCell ako rozsah, voliteľný IsText ako booleovský) Dim i ako celé číslo Dim StrNewTxt ako reťazec Dim strOld ako reťazec strOld = Trim (rCell) Pre i = 1 až Len (strOld) StrNewTxt = stred (strOld, i, 1) & StrNewTxt Ďalej i If IsText = False Then CompleteReverse = CLng (StrNewTxt) Else CompleteReverse = StrNewTxt End If End Funkcia
- V bunke B1 bude vzorec
- = CompleteReverse (A1, TRUE)
Ako získať z bunky všetky slová v opačnom poradí?
Na nájdenie riešenia budeme mať niekoľko kódov. Aby boli všetky slová v úplnom opačnom poradí, skopírujeme a vložíme nasledujúci kód do modulu
Funkcia ReverseOrder1 (rozsah ako rozsah) Dim Val ako variant, počítadlo ako celé číslo, R () ako variant Val = rozdelenie (Application.WorksheetFunction.Substitute (Rng.Value, "", ""), ",") ReDim R (LBound (Val) Na UBound (Val)) Pre počítadlo = LBound (Val) Na UBound (Val) R (UBound (Val) - Počítadlo) = Val (Počítadlo) Nasledujúce počítadlo ReverseOrder1 = Pripojenie (R, ",") Koniec Funkcia
- V bunke C1 bude vzorec
- = ReverseOrder1 (A1)
Pozrime sa na druhý kód VBA:
Funkcia ReverseOrder2 (rozsah ako rozsah) Ako reťazec Dim počítadlo ako dlhé, R () ako reťazec, teplota ako reťazec R = Rozdelenie (Nahradiť (Rng.Value2, "", "" ",", ") pre počítadlo = LViazané (R ) To (UBound (R) - 1) \ 2 temp = R (UBound (R) - Counter) R (UBound (R) - Counter) = R (Counter) R (Counter) = temp Next Counter ReverseOrder2 = Join (R , ",") Koniec funkcie
- V bunke D1 bude vzorec
- = ReverseOrder2 (A1)
Ako obrátiť poradie stĺpcov?
V prípade, že máte požiadavku obrátiť poradie údajov stĺpca, mali by ste sa bližšie pozrieť na nasledujúci kód:
Sub ReverseColumnOrder () Dim wBase As worksheet, wResult As Worksheet, i As Long, x As Long Set wBase = Sheets ("Sheet1") Set wResult = Sheets ("Sheet2") Application.ScreenUpdating = False With wBase For i = .Range ("A1"). CurrentRegion.Rows.Počítajte do 1 kroku -1 x = x + 1. Rozsah ("A1"). CurrentRegion.Rows (i). Skopírujte wResult.Range ("A" & x) Ďalej i Koniec With Application.ScreenUpdating = True End Sub
Vyššie uvedený kód skontroluje údaje v stĺpci A v hárku 1 a potom obráti poradie v hárku 2. Pozrite si obrázok nižšie
Ako získať obrátené čísla iba z textu?
Príklad: „excel (123) tip“ je obsah bunky
Požadovať výstup: „tip pre excel (321)“
V programe Excel môže existovať niekoľko spôsobov, ako dosiahnuť rovnaký výkon, a to isté platí aj pre hľadanie riešení s nástrojmi VBA UDF. V tomto prípade ukážeme 5 rôznych spôsobov.
Skopírujte a prilepte nasledujúce kódy do štandardného modulu:
Funkcia ReverseNumber1 (v ako variant) Ako reťazec Dim iSt ako celé číslo, iEnd ako celé číslo, sNum ako reťazec, sTemp Ako reťazec iSt = InStr (v, "(") iEnd = InStr (v, ")") Ak iSt = 0 Alebo iEnd = 0 Potom ReverseNumber1 = v: Ukončí funkciu sNum = Mid (v, iSt + 1, iEnd - iSt - 1) Pre i = Len (sNum) Do 1 Krok -1 sTemp = sTemp & Mid (sNum, i, 1) Ďalej i ReverseNumber1 = Vľavo (v, iSt) & sTemp & Mid (v, iEnd, 5 5) Koniec Funkcia Funkcia ReverseNumber2 (s ako reťazec) Ako reťazec Dim i &, t $, ln & t = s: ln = InStr (s , ")") - 1 pre i = InStr (s, "(") + 1 do InStr (s, ")") - 1 stred (t, i, 1) = stred (s, ln, 1) ln = ln - 1 Ďalej ReverseNumber2 = t Koniec Funkcia Funkcia ReverseNumber3 (c00) c01 = Split (Split (c00, ")") (0), "(") (1) ReverseNumber3 = Replace (c00, "(" & c01 & " ) "," ("& StrReverse (c01) &") ") Koniec Funkcia Funkcia ReverseNumber4 (c00) ReverseNumber4 = vľavo (c00, InStr (c00," (")) & StrReverse (stred (vľavo (c00, _ InStr ( c00, ")") - 1), InStr (c00, "(") + 1)) & Mid (c00, InStr (c00, ")")) Koniec Funkcia Funkcia ReverseNumber5 (s ako reťazec ) Dim m as Object with CreateObject ("VBScript.Regexp") .Global = True .Pattern = "(\ D*) (\ d*)" For every m In .Execute (s) ReverseNumber5 = ReverseNumber5 & m.submatches ( 0) & StrReverse (m.submatches (1)) Next End with Set m = Nothing End Function
- V bunke B2 bude vzorec
- = ReverseNumber1 (A2)
Ostatné 4 kódy môžeme otestovať podľa nasledujúceho vzorca:
1. = ReverseNumber2 (A2)
2. = ReverseNumber3 (A2)
3. = ReverseNumber4 (A2)
4. = ReverseNumber5 (A2)
Všetkých vyššie uvedených 5 kódov makier poskytne rovnaký výstup; však; jeden môže prijať kód, ktorý im najviac vyhovuje.
Ako zvrátiť obsah bunky v aktívnej bunke?
V prípade, že chcete, aby makro bežalo iba na activecell a potom obrátilo obsah. Tento kód sa nespustí v bunke, ktorá obsahuje vzorec.
Použijeme nasledujúci kód:
Sub Reverse_Cell_Contents () 'toto makro pobeží iba na activecell' --- Komentár Ak nie ActiveCell.HasFormula Then sRaw = ActiveCell.Text sNew = "" For j = 1 To Len (sRaw) sNew = Mid (sRaw, j, 1 ) + sNový ďalší j ActiveCell.Value = sNový koniec, ak koniec Sub
Ak je kurzor v bunke A1, ktorá obsahuje „exceltip“, vyššie uvedené makro ju prevedie na „pitlecxe“.
Záver: V programe Microsoft Excel môžeme mať toľko UDF na jedno riešenie. Tento UDF bude fungovať od verzie 2003 do 2013.
Ak sa vám páčili naše blogy, zdieľajte ich so svojimi priateľmi na Facebooku. A tiež nás môžete sledovať na Twitteri a Facebooku.
Radi by sme vás počuli, dajte nám vedieť, ako môžeme zlepšiť, doplniť alebo inovovať našu prácu a zlepšiť ju pre vás. Napíšte nám na e -mailová stránka