Kako pridobiti besedilo in številko v obratni smeri prek VBA v Microsoft Excelu

Anonim

V Excelu so trenutki, ko želimo popolnoma spremeniti besedilo ali njihov vrstni red s kodo VBA. Obstajajo lahko različne zahteve, na primer pridobivanje povratne vsebine celic, obratni vrstni red celic itd.

V tem članku bomo izvedeli naslednje:

  • Kako do povratne vsebine celic?
  • Kako iz celice dobiti vse besede v obratnem vrstnem redu?
  • Kako obrniti vrstni red stolpcev?
  • Kako dobiti povratne številke samo iz besedila?
  • Kako obrniti vsebino celic aktivne celice?

Kako do povratne vsebine celic?

V Excelu je treba spremeniti besedilo ali številke v celicah, npr. "Angleščina" v "hsilgne"

Sledi posnetek podatkov pred izhodom:

Sledi posnetek zahtevanega izhoda v stolpcu B:

Če želimo dobiti zgornji izhod, moramo slediti spodnjim korakom za zagon urejevalnika VB

  • Kliknite zavihek Razvijalec
  • V skupini Koda izberite Visual Basic

  • Kopirajte spodnjo kodo v standardni modul
 Funkcija CompleteReverse (rCell As Range, Izbirni IsText kot Boolean) Dim i As Integer Dim StrNewTxt As String Dim strOld As String strOld = Trim (rCell) Za i = 1 To Len (strOld) StrNewTxt = Mid (strOld, i, 1) & StrNewTxt Naprej i Če je IsText = False Potem CompleteReverse = CLng (StrNewTxt) Sicer CompleteReverse = StrNewTxt Konec Funkcija End 

  • V celici B1 bo formula
  • = CompleteReverse (A1, TRUE)

Kako iz celice dobiti vse besede v obratnem vrstnem redu?

Za rešitev bomo imeli nekaj kod. Če želite dobiti vse besede v popolnem obratnem vrstnem redu, bomo naslednjo kodo kopirali in prilepili v modul

 Funkcija ReverseOrder1 (Rng As Range) Dim Val Kot Variant, Counter As Integer, R () As Variant Val = Split (Application.WorksheetFunction.Substitute (Rng.Value, "", "),", ") ReDim R (LBound (Val) do UBound (Val)) Za števec = LBound (Val) do UBound (Val) R (UBound (Val) - Counter) = Val (Counter) Naslednji števec ReverseOrder1 = Pridruži se (R, ",") Končna funkcija 

  • V celici C1 bo formula
  • = ReverseOrder1 (A1)

Oglejmo si drugo kodo VBA:

 Funkcija ReverseOrder2 (Rng As Range) As String Dim Counter As Long, R () As String, temp As String R = Split (Replace (Rng.Value2, "", ""), ",") For Counter = LBound (R ) Za (UBound (R) - 1) \ 2 temp = R (UBound (R) - Counter) R (UBound (R) - Counter) = R (Counter) R (Counter) = temp Naslednji števec ReverseOrder2 = Join (R , ",") Končna funkcija 

  • V celici D1 bo formula
  • = ReverseOrder2 (A1)

Kako obrniti vrstni red stolpcev?

Če morate spremeniti vrstni red podatkov v stolpcu, si morate podrobneje ogledati spodnjo kodo:

 Sub ReverseColumnOrder () Dim wBase Kot delovni list, wResult Kot delovni list, i As Long, x As Long Set wBase = Sheets ("Sheet1") Set wResult = Sheets ("Sheet2") Application.ScreenUpdating = False Z 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 Z Application.ScreenUpdating = True End Sub 

Zgornja koda bo preverila podatke v stolpcu A v listu 1 in nato obrnila vrstni red v listu 2. Glejte sliko spodaj

Kako dobiti povratne številke samo iz besedila?

Primer: »excel (123) tip« je vsebina celice

Zahtevaj izhod: "excel (321) tip"

V Excelu je na več načinov mogoče doseči enak rezultat, enako pa je tudi pri iskanju rešitve z VBA UDF -ji. V tem primeru bomo pokazali 5 različnih načinov.

Kopirajte in prilepite naslednje kode v standardni modul:

 Funkcija ReverseNumber1 (v kot varianta) As String Dim iSt As Integer, iEnd As Integer, sNum As String, sTemp As String iSt = InStr (v, "(") iEnd = InStr (v, ")") Če je iSt = 0 Ali iEnd = 0 Potem ReverseNumber1 = v: Izhodna funkcija sNum = Mid (v, iSt + 1, iEnd - iSt - 1) Za i = Len (sNum) Na 1 korak -1 sTemp = sTemp & Mid (sNum, i, 1) Naprej i ReverseNumber1 = Levo (v, iSt) & sTemp & Mid (v, iEnd, 5 5) Končna funkcija Funkcija ReverseNumber2 (s kot niz) Kot niz Dim i &, t $, ln & t = s: ln = InStr (s , ")") - 1 Za i = InStr (s, "(") + 1 Za InStr (s, ")") - 1 Srednje (t, i, 1) = Srednje (s, ln, 1) ln = ln - 1 Naprej ReverseNumber2 = t Končna funkcija Funkcija ReverseNumber3 (c00) c01 = Razdeli (Split (c00, ")") (0), "(") (1) ReverseNumber3 = Zamenjaj (c00, "(" & c01 & " ) "," ("& StrReverse (c01) &") ") Končna funkcija Funkcija ReverseNumber4 (c00) ReverseNumber4 = Levo (c00, InStr (c00," (")) & StrReverse (Sredina (Levo (c00, _ InStr ( c00, ")") - 1), InStr (c00, "(") + 1)) & Mid (c00, InStr (c00, ")")) Končna funkcija Funkcija ReverseNumber5 (s As String ) Zatemni m kot objekt z CreateObject ("VBScript.Regexp") .Global = True .Pattern = "(\ D*) (\ d*)" Za vsak m V .Execute (s) ReverseNumber5 = ReverseNumber5 & m. 0) & StrReverse (m.submatches (1)) Next End With Set m = Funkcija konca nič 

  • V celici B2 bo formula naslednja
  • = ReverseNumber1 (A2)

Preostale 4 kode lahko preizkusimo z naslednjo formulo:

1. = ReverseNumber2 (A2)

2. = ReverseNumber3 (A2)

3. = ReverseNumber4 (A2)

4. = ReverseNumber5 (A2)

Vseh zgornjih 5 kod makrov bo zagotovilo enak izhod; vendar; lahko sprejmejo kodo, ki jim najbolj ustreza.

Kako obrniti vsebino celic aktivne celice?

Če želite, da se makro izvaja samo na aktivni celici in nato vsebino obrne. Ta koda se ne bo izvajala v celici, ki vsebuje formulo.

Uporabili bomo naslednjo kodo:

 Sub Reverse_Cell_Contents () 'ta makro bo deloval samo na activecell' --- Komentiraj, če ni ActiveCell.HasFormula Potem sRaw = ActiveCell.Text sNew = "" Za j = 1 To Len (sRaw) sNew = Mid (sRaw, j, 1 ) + sNew Next j ActiveCell.Value = sNew End If End Sub 

Če je kazalec na celici A1, ki vsebuje “exceltip”, ga zgornji makro pretvori v “pitlecxe”.

Zaključek: Za eno samo rešitev lahko v Microsoft Excelu imamo toliko UDF -jev. Ta UDF bo deloval od različice 2003 do 2013.

Če so vam bili naši blogi všeč, jih delite s prijatelji na Facebooku. Prav tako nas lahko spremljate na Twitterju in Facebooku.

Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo, dopolnimo ali inoviramo svoje delo in ga izboljšamo. Pišite nam na e -poštno mesto