Cum să obțineți Text & Number în Reverse prin VBA în Microsoft Excel

Anonim

În Excel, există momente în care vrem să inversăm complet textul sau ordinea lor cu codul VBA. Pot exista diverse cerințe, cum ar fi extragerea conținutului de celulă inversă, ordinea inversă a celulei și așa mai departe.

În acest articol, vom învăța următoarele:

  • Cum se obține conținutul celular invers?
  • Cum să obțineți toate cuvintele în ordine inversă dintr-o celulă?
  • Cum se inversează ordinea coloanelor?
  • Cum se obțin numere inverse numai din text?
  • Cum se inversează conținutul celulei activecell?

Cum se obține conținutul celular invers?

În Excel există cerința de a inversa textul sau numerele din celule, de ex. „Engleză” la „hsilgne”

Urmează instantaneul datelor înainte de ieșire:

Următorul este instantaneul rezultatului necesar în coloana B:

Pentru a obține rezultatul de mai sus, trebuie să urmăm pașii de mai jos pentru a lansa editorul VB

  • Faceți clic pe fila Dezvoltator
  • Din grupul de coduri, selectați Visual Basic

  • Copiați codul de mai jos în modulul standard
 Funcția CompleteReverse (rCell As Range, opțional IsText As Boolean) Dim i As Integer Dim StrNewTxt As String Dim strOld As String strOld = Trim (rCell) For i = 1 To Len (strOld) StrNewTxt = Mid (strOld, i, 1) & StrNewTxt Next i If IsText = False Then CompleteReverse = CLng (StrNewTxt) Altfel CompleteReverse = StrNewTxt End If End Function 

  • În celula B1 formula va fi
  • = CompleteReverse (A1, TRUE)

Cum să obțineți toate cuvintele în ordine inversă dintr-o celulă?

Vom avea câteva coduri pentru a găsi soluția. Pentru a obține toate cuvintele în ordine inversă completă, vom copia și lipi următorul cod în modul

 Funcția ReverseOrder1 (Rng As Range) Dim Val As Variant, Counter As Inger, R () As Variant Val = Split (Application.WorksheetFunction.Substitute (Rng.Value, "", ""), ",") ReDim R (LBound (Val) To UBound (Val)) For Counter = LBound (Val) To UBound (Val) R (UBound (Val) - Counter) = Val (Counter) Next Counter ReverseOrder1 = Join (R, ",") Funcție finală 

  • În celula C1 formula va fi
  • = ReverseOrder1 (A1)

Să aruncăm o privire la al doilea cod VBA:

 Funcția ReverseOrder2 (Rng As Range) As String Dim Counter At Long, R () As String, temp As String R = Split (Înlocuiți (Rng.Value2, "", ""), ",") Pentru Counter = LBound (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 , ",") Funcție de sfârșit 

  • În celula D1 formula va fi
  • = ReverseOrder2 (A1)

Cum se inversează ordinea coloanelor?

În cazul în care aveți obligația de a inversa ordinea datelor unei coloane, ar trebui să aruncați o privire mai atentă la codul de mai jos:

 Sub ReverseColumnOrder () Dim wBase ca foaie de lucru, wResult ca foaie de lucru, i cât mai lung, x ca lung 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 Cu Application.ScreenUpdating = True End Sub 

Codul de mai sus va verifica datele din coloana A din foaia 1 și apoi va inversa ordinea din foaia 2. Consultați imaginea de mai jos

Cum se obțin numere inverse numai din text?

Exemplu: „excel (123) tip” este conținutul celulei

Necesită ieșire: „excel (321) tip”

În Excel, pot exista mai multe moduri de a obține același rezultat și același lucru este acela de a găsi soluții cu VBA UDF. Pentru acest exemplu, vom arăta 5 moduri diferite.

Copiați și lipiți următoarele coduri în modulul standard:

 Funcția ReverseNumber1 (v Ca Variant) Ca Șir Dim ca Întreg, iEnd Ca Întreg, sNum Ca Șir, sTemp Ca Șir iSt = InStr (v, "(") iEnd = InStr (v, ")") Dacă iSt = 0 Sau iEnd = 0 Apoi ReverseNumber1 = v: Exit Function sNum = Mid (v, iSt + 1, iEnd - iSt - 1) Pentru i = Len (sNum) To 1 Step -1 sTemp = sTemp & Mid (sNum, i, 1) Următorul i ReverseNumber1 = Stânga (v, iSt) & sTemp & Mid (v, iEnd, 5 5) Funcția de sfârșit Funcția ReverseNumber2 (s Ca șir) Ca șir Dim i &, t $, ln & t = s: ln = InStr (s , ")") - 1 Pentru i = InStr (s, "(") + 1 Către InStr (s, ")") - 1 Mid (t, i, 1) = Mid (s, ln, 1) ln = ln - 1 Următorul ReverseNumber2 = t Funcția de sfârșit Funcția ReverseNumber3 (c00) c01 = Split (Split (c00, ")") (0), "(") (1) ReverseNumber3 = Înlocuiți (c00, "(" & c01 & " ) "," ("& StrReverse (c01) &") ") Funcție finală Funcție ReverseNumber4 (c00) ReverseNumber4 = Left (c00, InStr (c00," (")) & StrReverse (Mid (Left (c00, _ InStr ( c00, ")") - 1), InStr (c00, "(") + 1)) & Mid (c00, InStr (c00, ")")) Funcție finală Funcție Număr invers 5 (s Ca șir ) Dim Dim ca obiect cu CreateObject ("VBScript.Regexp") .Global = True .Pattern = "(\ D *) (\ d *)" Pentru fiecare m In .Execute (s) ReverseNumber5 = ReverseNumber5 & m.submatches ( 0) & StrReverse (m.submatches (1)) Next End With Set m = Nothing End Function 

  • În celula B2, formula va fi
  • = Număr invers1 (A2)

Putem testa celelalte 4 coduri cu următoarea formulă:

1. = Număr invers2 (A2)

2. = Număr invers3 (A2)

3. = Număr invers4 (A2)

4. = Număr invers5 (A2)

Toate cele 5 coduri macro de mai sus vor oferi aceeași ieșire; in orice caz; se poate adopta codul cu care sunt cel mai confortabil.

Cum se inversează conținutul celulei activecell?

În cazul în care doriți ca o macro să ruleze numai pe activecell și apoi să inversați conținutul. Acest cod nu va rula pe celula care conține formulă.

Vom folosi următorul cod:

 Sub Reverse_Cell_Contents () 'această macro va rula numai pe activecell' --- Comentariu dacă nu este ActiveCell.HasFormula Atunci sRaw = ActiveCell.Text sNew = "" Pentru j = 1 To Len (sRaw) sNew = Mid (sRaw, j, 1 ) + sNew Next j ActiveCell.Value = sNew End If End Sub 

Dacă cursorul se află pe celula A1, care conține „exceltip”, atunci macro-ul de mai sus îl va converti în „pitlecxe”.

Concluzie: Putem avea cât mai multe UDF-uri pentru o singură soluție în Microsoft Excel. Acest UDF va funcționa din versiunea 2003 până în 2013.

Dacă ți-au plăcut blogurile noastre, împărtășește-le prietenilor tăi de pe Facebook. Și, de asemenea, ne puteți urmări pe Twitter și Facebook.

Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți, completa sau inova munca noastră și să o îmbunătățim. Scrie-ne la site de e-mail