Come arrivare Testo e Numero in Reverse attraverso VBA in Microsoft Excel
In Excel, ci sono momenti in cui vogliamo che il testo sia completamente invertito o il loro ordine con il codice VBA. Ci possono essere vari requisiti, come l’estrazione del contenuto delle celle inverse, l’ordine delle celle inverso e così via .
In questo articolo impareremo quanto segue:
-
Come ottenere il contenuto della cella inversa?
-
Come ottenere tutte le parole in ordine inverso da una cella?
-
Come invertire l’ordine delle colonne?
-
Come ottenere numeri inversi solo dal testo?
-
Come invertire il contenuto delle celle di activecell?
Come ottenere il contenuto della cella inversa?
In Excel è necessario invertire il testo oi numeri nelle celle, ad es. Da “english” a “hsilgne” Di seguito è riportata l’istantanea dei dati prima dell’output:
Di seguito è riportata l’istantanea dell’output di require nella colonna B:
Per ottenere l’output di cui sopra, dobbiamo seguire i passaggi seguenti per avviare l’editor VB Fare clic sulla scheda Sviluppatore Dal gruppo Codice, selezionare Visual Basic
-
Copia il codice seguente nel modulo standard
Function CompleteReverse(rCell As Range, Optional 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) Else CompleteReverse = StrNewTxt End If End Function
===
Nella cella B1 la formula sarà = CompleteReverse (A1, TRUE)
Come ottenere tutte le parole in ordine inverso da una cella?
Avremo un paio di codici per trovare la soluzione. Per ottenere tutte le parole in completo ordine inverso, copieremo e incolleremo il seguente codice nel modulo
Function ReverseOrder1(Rng As Range) Dim Val As Variant, Counter As Integer, 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, ", ") End Function
Nella cella C1 la formula sarà = ReverseOrder1 (A1)
Diamo un’occhiata al secondo codice VBA:
Function 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) To (UBound(R) - 1) \ 2 temp = R(UBound(R) - Counter) R(UBound(R) - Counter) = R(Counter) R(Counter) = temp Next Counter ReverseOrder2 = Join(R, ", ") End Function
Nella cella D1 la formula sarà = ReverseOrder2 (A1)
Come invertire l’ordine delle colonne?
Nel caso in cui tu abbia la necessità di invertire l’ordine dei dati di una colonna, dovresti dare un’occhiata più da vicino al codice seguente:
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.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
Il codice sopra controllerà i dati nella colonna A nel foglio 1 e poi invertirà l’ordine nel foglio 2. Fare riferimento all’immagine sottostante
===
Come ottenere numeri inversi solo dal testo?
Esempio: “excel (123) tip” è il contenuto della cella Richiedi output: “excel (321) tip”
In Excel, ci possono essere diversi modi per ottenere lo stesso output e lo stesso vale per trovare una soluzione con le UDF VBA. Per questo esempio, mostreremo 5 modi diversi.
Copia e incolla i seguenti codici nel modulo standard:
Function ReverseNumber1(v As Variant) As String Dim iSt As Integer, iEnd As Integer, sNum As String, sTemp As String iSt = InStr(v, "(") iEnd = InStr(v, ")") If iSt = 0 Or iEnd = 0 Then ReverseNumber1 = v: Exit Function sNum = Mid(v, iSt + 1, iEnd - iSt - 1) For i = Len(sNum) To 1 Step -1 sTemp = sTemp & Mid(sNum, i, 1) Next i ReverseNumber1 = Left(v, iSt) & sTemp & Mid(v, iEnd, 5 ^ 5) End Function Function ReverseNumber2(s As String) As String Dim i&, t$, ln& t = s: ln = InStr(s, ")") - 1 For i = InStr(s, "(") + 1 To InStr(s, ")") - 1 Mid(t, i, 1) = Mid(s, ln, 1) ln = ln - 1 Next ReverseNumber2 = t End Function Function ReverseNumber3(c00) c01 = Split(Split(c00, ")")(0), "(")(1) ReverseNumber3 = Replace(c00, "(" & c01 & ")", "(" & StrReverse(c01) & ")") End Function Function ReverseNumber4(c00) ReverseNumber4 = Left(c00, InStr(c00, "(")) & StrReverse(Mid(Left(c00, _ InStr(c00, ")") - 1), InStr(c00, "(") + 1)) & Mid(c00, InStr(c00, ")")) End Function Function ReverseNumber5(s As String) Dim m As Object With CreateObject("VBScript.Regexp") .Global = True .Pattern = "(\D)(\d)" For Each m In .Execute(s) ReverseNumber5 = ReverseNumber5 & m.submatches(0) & StrReverse(m.submatches(1)) Next End With Set m = Nothing End Function
Nella cella B2, la formula sarà = ReverseNumber1 (A2)
Possiamo testare gli altri 4 codici con la seguente formula:
{vuoto} 1. = ReverseNumber2 (A2)
{vuoto} 2. = ReverseNumber3 (A2)
{vuoto} 3. = ReverseNumber4 (A2)
{vuoto} 4. = ReverseNumber5 (A2)
Tutti i 5 codici macro precedenti forniranno lo stesso output; però; si può adottare il codice con cui si trovano più a loro agio.
Come invertire il contenuto delle celle di activecell?
Nel caso in cui desideri che una macro venga eseguita solo su activecell e quindi inverti il contenuto. Questo codice non verrà eseguito sulla cella che contiene la formula.
Useremo il seguente codice:
Sub Reverse_Cell_Contents() 'this macro will run only on activecell' --- Comment If Not ActiveCell.HasFormula Then sRaw = ActiveCell.Text sNew = "" For j = 1 To Len(sRaw) sNew = Mid(sRaw, j, 1) + sNew Next j ActiveCell.Value = sNew End If End Sub
Se il cursore si trova sulla cella A1, che contiene “exceltip”, la macro sopra lo convertirà in “pitlecxe”.
Conclusione: possiamo avere tante UDF per un’unica soluzione in Microsoft Excel. Questa UDF funzionerà dalla versione 2003 alla 2013.
Se ti sono piaciuti i nostri blog, condividilo con i tuoi amici su Facebook. E puoi anche seguirci su Twitter e Facebook.
Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare, integrare o innovare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]