Kako dobiti obrnuti tekst i broj putem VBA u Microsoft Excelu

Anonim

U Excelu postoje slučajevi kada želimo potpuno preokrenuti tekst ili njihov redoslijed s VBA kodom. Mogu postojati različiti zahtjevi, poput izdvajanja obrnutog sadržaja ćelija, obrnutog redoslijeda ćelija itd.

U ovom ćemo članku naučiti sljedeće:

  • Kako doći do obrnutog sadržaja ćelije?
  • Kako dobiti sve riječi obrnutim redoslijedom iz ćelije?
  • Kako poništiti redoslijed stupaca?
  • Kako dobiti obrnute brojeve samo iz teksta?
  • Kako poništiti sadržaj ćelije aktivne stanice?

Kako doći do obrnutog sadržaja ćelije?

U Excelu postoji zahtjev za promjenom teksta ili brojeva u ćelijama, npr. "Engleski" na "hsilgne"

Slijedi snimak podataka prije ispisa:

Slijedi snimak potrebnog izlaza u stupcu B:

Da bismo dobili gornji izlaz, moramo slijediti korake u nastavku za pokretanje VB uređivača

  • Kliknite karticu Developer
  • Iz grupe kodova odaberite Visual Basic

  • Kopirajte donji kod u standardni modul
 Funkcija CompleteReverse (rCell As Range, Optional IsText As 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 Dalje i Ako je IsText = False Tada CompleteReverse = CLng (StrNewTxt) Ostalo CompleteReverse = StrNewTxt Kraj ako je funkcija kraj 

  • U ćeliji B1 formula će biti
  • = CompleteReverse (A1, TRUE)

Kako dobiti sve riječi obrnutim redoslijedom iz ćelije?

Imat ćemo nekoliko kodova za pronalaženje rješenja. Da bi sve riječi bile u potpunom obrnutom redoslijedu, kopirat ćemo i zalijepiti sljedeći kod u modul

 Funkcija ReverseOrder1 (Rng As Range) Dim Val Kao Variant, Counter As Integer, R () As Variant Val = Split (Application.WorksheetFunction.Substitute (Rng.Value, "", ""), ",") ReDim R (LBound (Val) Za UBound (Val)) Za brojač = LBound (Val) Za UBound (Val) R (UBound (Val) - Brojač) = Val (Brojač) Sljedeći brojač ReverseOrder1 = Pridruži se (R, ",") Kraj funkcija 

  • U ćeliji C1 formula će biti
  • = Obrnuti nalog1 (A1)

Pogledajmo drugi VBA kod:

 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 Next Counter ReverseOrder2 = Join (R , ",") Funkcija završetka 

  • U ćeliji D1 formula će biti
  • = Obrnuti nalog2 (A1)

Kako poništiti redoslijed stupaca?

U slučaju da trebate promijeniti obrnuti redoslijed podataka u stupcima, trebali biste pobliže pogledati donji kod:

 Sub ReverseColumnOrder () Zatamni wBase kao radni list, wResult kao radni list, i koliko je dugo, x koliko je dugo postavljeno 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 = True End Sub 

Gornji kôd će provjeriti podatke u stupcu A u listu 1, a zatim obrnuti redoslijed u listu 2. Pogledajte sliku ispod

Kako dobiti obrnute brojeve samo iz teksta?

Primjer: “excel (123) tip” je sadržaj ćelije

Zahtijeva izlaz: "excel (321) savjet"

U Excelu može postojati više načina za dobivanje istog rezultata; isto vrijedi i za pronalaženje rješenja s VBA UDF -ovima. Za ovaj primjer pokazat ćemo 5 različitih načina.

Kopirajte i zalijepite sljedeće kodove u standardni modul:

 Funkcija ReverseNumber1 (v kao varijanta) As String Dim iSt As Integer, iEnd As Integer, sNum As String, sTemp As String iSt = InStr (v, "(") iEnd = InStr (v, ")") Ako je iSt = 0 Ili iEnd = 0 Zatim ReverseNumber1 = v: Izlazna funkcija sNum = Mid (v, iSt + 1, iEnd - iSt - 1) Za i = Len (sNum) Na 1 korak -1 sTemp = sTemp & Mid (sNum, i, 1) Dalje i ReverseNumber1 = Lijevo (v, iSt) & sTemp & Mid (v, iEnd, 5 5) Funkcija završetka Funkcija ReverseNumber2 (s Kao niz) Kao niz Dim i &, t $, ln & t = s: ln = InStr (s , ")") - 1 Za i = InStr (s, "(") + 1 Za InStr (s, ")") - 1 Sredina (t, i, 1) = Sredina (s, ln, 1) ln = ln - 1 Sljedeći ReverseNumber2 = t Kraj Funkcija Funkcija ReverseNumber3 (c00) c01 = Split (Split (c00, ")") (0), "(") (1) ReverseNumber3 = Replace (c00, "(" & c01 & " ) "," ("& StrReverse (c01) &") ") Funkcija završetka Funkcija ReverseNumber4 (c00) ReverseNumber4 = Lijevo (c00, InStr (c00," (")) & StrReverse (Sredina (Lijevo (c00, _ InStr ( c00, ")") - 1), InStr (c00, "(") + 1)) & Mid (c00, InStr (c00, ")")) Kraj Funkcija Funkcija ReverseNumber5 (s As String ) Dim m as Object With CreateObject ("VBScript.Regexp") .Global = True .Pattern = "(\ D*) (\ d*)" Za svaki m U. Izvršenje (i) ReverseNumber5 = ReverseNumber5 & m.podudaranja ( 0) & StrReverse (m.podudaranja (1)) Sljedeći kraj sa setom m = ništa Kraj funkcija 

  • U ćeliji B2 formula će biti
  • = Obrnuti broj1 (A2)

Ostala 4 koda možemo testirati sa sljedećom formulom:

1. = Obrnuti broj 2 (A2)

2. = Obrnuti broj3 (A2)

3. = Obrnuti broj4 (A2)

4. = Obrnuti broj5 (A2)

Svih gore navedenih 5 makro kodova pružit će isti izlaz; međutim; može se usvojiti kôd koji im najviše odgovara.

Kako poništiti sadržaj ćelije aktivne stanice?

U slučaju da želite da se makronaredba pokreće samo na aktivnoj ćeliji, a zatim preokrene sadržaj. Ovaj kôd neće se izvoditi na ćeliji koja sadrži formulu.

Koristit ćemo sljedeći kod:

 Sub Reverse_Cell_Contents () 'ovaj će se makro pokrenuti samo na aktivnoj ćeliji' --- Komentar ako nije ActiveCell.HasFormula Zatim sRaw = ActiveCell.Text sNew = "" Za j = 1 do Len (sRaw) sNew = Srednji (sRaw, j, 1 ) + sNew Next j ActiveCell.Value = sNew End If End Sub 

Ako je pokazivač na ćeliji A1 koja sadrži “exceltip”, tada će ga gornja makronaredba pretvoriti u “pitlecxe”.

Zaključak: Možemo imati što više UDF -ova za jedno rješenje u Microsoft Excelu. Ovaj UDF će raditi od verzije 2003. do 2013. godine.

Ako vam se sviđaju naši blogovi, podijelite ih sa svojim prijateljima na Facebooku. Također nas možete pratiti na Twitteru i Facebooku.

Voljeli bismo čuti vaše mišljenje, javite nam kako možemo poboljšati, nadopuniti ili inovirati svoj rad i učiniti ga boljim za vas. Pišite nam na web mjesto e -pošte