Dans Excel, il y a des moments où nous voulons inverser complètement le texte ou leur ordre avec le code VBA. Il peut y avoir diverses exigences, comme l’extraction du contenu des cellules inversées, l’ordre inverse des cellules, etc.

Dans cet article, nous allons apprendre ce qui suit:

  • Comment obtenir le contenu inverse des cellules?

  • Comment obtenir tous les mots dans l’ordre inverse d’une cellule?

  • Comment inverser l’ordre des colonnes?

  • Comment obtenir des numéros inversés uniquement à partir du texte?

  • Comment inverser le contenu cellulaire d’activecell?

Comment obtenir le contenu de la cellule inverse?

Dans Excel, il est nécessaire d’inverser le texte ou les nombres dans les cellules, par exemple «English» à «hsilgne» Voici un instantané des données avant la sortie:

img1

Voici un aperçu de la sortie requise dans la colonne B:

img2

Pour obtenir la sortie ci-dessus, nous devons suivre les étapes ci-dessous pour lancer l’éditeur VB Cliquez sur l’onglet Développeur Dans le groupe Code, sélectionnez Visual Basic

img3

  • Copiez le code ci-dessous dans le module 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

===

Dans la cellule B1, la formule sera = CompleteReverse (A1, TRUE)

img5

Comment obtenir tous les mots dans l’ordre inverse d’une cellule?

Nous aurons quelques codes pour trouver la solution. Pour obtenir tous les mots dans l’ordre inverse complet, nous allons copier et coller le code suivant dans le module

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

Dans la cellule C1, la formule sera = ReverseOrder1 (A1)

img7

Jetons un œil au deuxième code 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

Dans la cellule D1, la formule sera = ReverseOrder2 (A1)

img9

Comment inverser l’ordre des colonnes?

Si vous avez l’obligation d’inverser l’ordre des données d’une colonne, vous devriez regarder de plus près le code ci-dessous:

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

Le code ci-dessus vérifiera les données de la colonne A de la feuille 1, puis inversera l’ordre de la feuille 2. Reportez-vous à l’image ci-dessous

Img11

Img12

===

Comment obtenir des nombres inversés uniquement à partir du texte?

Exemple: «excel (123) tip» est le contenu de la cellule. Sortie requise: «excel (321) tip»

Img13

Dans Excel, il peut y avoir plusieurs façons d’obtenir le même résultat et il en va de même pour trouver une solution avec VBA UDF. Pour cet exemple, nous montrerons 5 manières différentes.

Copiez et collez les codes suivants dans le module 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

Dans la cellule B2, la formule sera = ReverseNumber1 (A2)

Img16

Nous pouvons tester les 4 autres codes avec la formule suivante:

{vide} 1. = ReverseNumber2 (A2)

{vide} 2. = ReverseNumber3 (A2)

{vide} 3. = ReverseNumber4 (A2)

{vide} 4. = ReverseNumber5 (A2)

Tous les 5 codes macro ci-dessus fourniront la même sortie; pourtant; on peut adopter le code avec lequel ils sont le plus à l’aise.

Comment inverser le contenu de la cellule d’activecell?

Dans le cas où vous souhaitez qu’une macro s’exécute uniquement sur activecell, puis inversez le contenu. Ce code ne fonctionnera pas sur la cellule contenant une formule.

Nous utiliserons le code suivant:

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

Si le curseur se trouve sur la cellule A1, qui contient «exceltip», alors la macro ci-dessus la convertira en «pitlecxe».

Conclusion: Nous pouvons avoir autant d’UDF pour une seule solution dans Microsoft Excel. Cette UDF fonctionnera de la version 2003 à 2013.

image 29

Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez également nous suivre sur Twitter et Facebook.

Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]