Excelissä on aikoja, jolloin haluamme kääntää tekstin kokonaan tai muuttaa niiden järjestystä VBA -koodilla. Vaatimuksia voi olla erilaisia, kuten käänteisen solun sisällön poimiminen, käänteinen solujärjestys ja niin edelleen.
Tässä artikkelissa opimme seuraavaa:
- Kuinka saada käänteinen solujen sisältö?
- Kuinka saada kaikki sanat käänteisessä järjestyksessä solusta?
- Kuinka kääntää sarakkeiden järjestys?
- Kuinka saada käänteiset numerot vain tekstistä?
- Kuinka muuttaa aktiivisen solun solujen sisältö?
Kuinka saada käänteinen solujen sisältö?
Excelissä vaaditaan kääntämään solujen teksti tai numerot, esim. "Englanti" "hsilgne"
Seuraavassa on tilannekuva tiedoista ennen tulostusta:
Seuraavassa on tilannevedos vaaditusta sarakkeesta B:
Yllä olevan tuloksen saamiseksi meidän on noudatettava alla olevia vaiheita VB -editorin käynnistämiseksi
- Napsauta Kehittäjä -välilehteä
- Valitse koodiryhmästä Visual Basic
- Kopioi alla oleva koodi vakiomoduuliin
Toiminto CompleteReverse (rCell As Range, valinnainen IsText Booleanina) Dim i kokonaislukuna Dim StrNewTxt merkkijonona Dim strOld As String strOld = Trim (rCell) For i = 1 to Len (strOld) StrNewTxt = Mid (strOld, i, 1) & StrNewTxt Seuraava i If IsText = False then CompleteReverse = CLng (StrNewTxt) Else CompleteReverse = StrNewTxt End If End -toiminto
- Solussa B1 kaava on
- = CompleteReverse (A1, TRUE)
Kuinka saada kaikki sanat käänteisessä järjestyksessä solusta?
Meillä on pari koodia ratkaisun löytämiseksi. Saadaksesi kaikki sanat käänteisessä järjestyksessä kopioimme ja liitämme seuraavan koodin moduuliin
Funktio ReverseOrder1 (Rng As Range) Dim Val Varianttina, Laskuri kokonaislukuna, R () Varianttina Val = Split (Application.WorksheetFunction.Substitute (Rng.Value, "", ""), ",") ReDim R (LBound (Val) To UBound (Val)) Laskurille = LBound (Val) To UBound (Val) R (UBound (Val) - Laskuri) = Val (Laskuri) Seuraava laskuri ReverseOrder1 = Liity (R, ",") Lopputoiminto
- Solussa C1 kaava on
- = Käänteinen tilaus1 (A1)
Katsotaanpa toista VBA -koodia:
Funktio ReverseOrder2 (Rng as Range) merkkijonon himmenninlaskurina niin kauan, R () merkkijonona, temp kuten merkkijono R = jaettu (Korvaa (Rng.Value2, "", ""), ",") Laskuri = LBound (R ) (UBound (R) - 1) \ 2 temp = R (UBound (R) - Counter) R (UBound (R) - Counter) = R (Counter) R (Counter) = temp Next Counter ReverseOrder2 = Join (R) , ",") Lopeta toiminto
- Solussa D1 kaava on
- = Käänteinen tilaus2 (A1)
Kuinka kääntää sarakkeiden järjestys?
Jos sarakkeen tietojen järjestys on käännettävä, sinun on tarkasteltava tarkemmin alla olevaa koodia:
Sub ReverseColumnOrder () Dim wBase kuin laskentataulukko, wResult kuin laskentataulukko, i Niin pitkä, x niin pitkä Set wBase = Sheets ("Sheet1") Set wResult = Sheets ("Sheet2") Application.ScreenUpdating = False With wBase For i = .Range ("A1"). CurrentRegion.Rows.Count to 1 Step -1 x = x + 1 .Range ("A1"). CurrentRegion.Rows (i) .Copy wResult.Range ("A" & x) Next i End With Application.ScreenUpdating = Todellinen loppuosa
Yllä oleva koodi tarkistaa taulukon 1 sarakkeen A tiedot ja kääntää sitten taulukon 2 järjestyksen. Katso alla oleva kuva
Kuinka saada käänteiset numerot vain tekstistä?
Esimerkki: "Excel (123) -vinkki" on solun sisältö
Edellyttää lähtöä: "excel (321) tip"
Excelissä voi olla useita tapoja saada sama tulos ja sama koskee ratkaisun löytämistä VBA UDF -laitteiden avulla. Tässä esimerkissä näytämme viisi eri tapaa.
Kopioi ja liitä seuraavat koodit vakiomoduuliin:
Funktio ReverseNumber1 (v Varianttina) Merkkijono Dim iSt kokonaislukuna, iEnd kokonaislukuna, sNum As String, sTemp As String iSt = InStr (v, "(") iEnd = InStr (v, ")") Jos iSt = 0 Tai iEnd = 0 Sitten ReverseNumber1 = v: Poistu toiminnosta sNum = Mid (v, iSt + 1, iEnd - iSt - 1) i = Len (sNum) 1 vaiheeseen -1 sTemp = sTemp & Mid (sNum, i, 1) Seuraava i ReverseNumber1 = Vasen (v, iSt) & sTemp & Mid (v, iEnd, 5 5) Lopeta funktio Toiminto ReverseNumber2 (s merkkijonona) merkkijonona Dim i &, t $, ln & t = s: ln = InStr (s , ")") - 1 For i = InStr (s, "(") + 1 InStr (s, ")") - 1 Mid (t, i, 1) = Mid (s, ln, 1) ln = ln - 1 Seuraava ReverseNumber2 = t Lopetusfunktio Toiminto ReverseNumber3 (c00) c01 = Split (Split (c00, ")") (0), "(") (1) ReverseNumber3 = Korvaa (c00, "(" & c01 & " ) "," ("& StrReverse (c01) &") ") Lopputoiminto Toiminto ReverseNumber4 (c00) ReverseNumber4 = Left (c00, InStr (c00," (")) & StrReverse (Mid (Left (c00, _ InStr ( c00, ")") - 1), InStr (c00, "(") + 1)) ja keskitaso (c00, InStr (c00, ")")) Lopetustoiminto Toiminto ReverseNumber5 (s merkkijonona ) Dim m objekteina CreateObject ("VBScript.Regexp") .Global = True .Pattern = "(\ D*) (\ d*)" Jokaista m In .Execute (s) ReverseNumber5 = ReverseNumber5 & m.submatches ( 0) & StrReverse (m.submatches (1)) Seuraava loppu asetuksella m = Ei mitään Lopputoiminto
- Solussa B2 kaava on
- = Käänteinen numero1 (A2)
Voimme testata muut 4 koodia seuraavalla kaavalla:
1. = Käänteinen numero2 (A2)
2. = Käänteinen numero3 (A2)
3. = KäänteinenLuku4 (A2)
4. = Käänteinen numero5 (A2)
Kaikki edellä mainitut 5 makrokoodia tarjoavat saman tuloksen; kuitenkin; voi hyväksyä koodin, johon he ovat mukavimpia.
Kuinka kääntää aktiivisen solun solujen sisältö?
Jos haluat makron toimivan vain Activecellissa ja käännä sitten sisältö. Tämä koodi ei toimi solussa, joka sisältää kaavan.
Käytämme seuraavaa koodia:
Sub Reverse_Cell_Contents () 'tämä makro suoritetaan vain aktiivisella solulla' --- Kommentoi, jos ei ole ActiveCell.HasFormula Sitten sRaw = ActiveCell.Text sNew = "" For j = 1 To Len (sRaw) sNew = Mid (sRaw, j, 1 ) + sUusi Seuraava j ActiveCell.Value = sUusi loppu Jos loppu Al
Jos kohdistin on solussa A1, joka sisältää "exceltip", yllä oleva makro muuntaa sen "pitlecxe": ksi.
Johtopäätös: Meillä voi olla yhtä monta UDF: ää yhdelle ratkaisulle Microsoft Excelissä. Tämä UDF toimii vuodesta 2003 vuoteen 2013.
Jos pidit blogistamme, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.
Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa, täydentää tai innovoida työtämme ja parantaa sitä sinulle. Kirjoita meille osoitteeseen sähköpostisivusto