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:

img1

Di seguito è riportata l’istantanea dell’output di require nella colonna B:

img2

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

img3

  • 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

img4

===

Nella cella B1 la formula sarà = CompleteReverse (A1, TRUE)

img5

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

img6

Nella cella C1 la formula sarà = ReverseOrder1 (A1)

img7

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

img8

Nella cella D1 la formula sarà = ReverseOrder2 (A1)

img9

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

img10

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

Img11

Img12

===

Come ottenere numeri inversi solo dal testo?

Esempio: “excel (123) tip” è il contenuto della cella Richiedi output: “excel (321) tip”

Img13

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

Img14

Img15

Nella cella B2, la formula sarà = ReverseNumber1 (A2)

Img16

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

Img17

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.

image 29

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]