Excelでは、テキストを完全に逆にしたり、VBAコードで順序を逆にしたりする場合があります。逆セルコンテンツの抽出、逆セル順序など、さまざまな要件があります。

この記事では、次のことを学びます。

  • 逆セルコンテンツを取得するにはどうすればよいですか?

  • セルからすべての単語を逆の順序で取得するにはどうすればよいですか?

  • 列の順序を逆にする方法は?

  • テキストからのみ逆数を取得するにはどうすればよいですか?

  • アクティブセルのセルコンテンツを逆にする方法は?

逆セルコンテンツを取得する方法は?

Excelでは、セル内のテキストまたは数字を逆にする必要があります。 「english」から「hsilgne」以下は、出力前のデータのスナップショットです。

img1

以下は、列Bのrequire出力のスナップショットです。

img2

上記の出力を取得するには、以下の手順に従ってVBエディターを起動する必要があります。[開発者]タブをクリックします。[コード]グループから、[VisualBasic]を選択します

img3

  • 以下のコードを標準モジュールにコピーします

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

===

セルB1では、数式は= CompleteReverse(A1、TRUE)

img5

になります。

セルからすべての単語を逆の順序で取得するにはどうすればよいですか?

解決策を見つけるためのコードがいくつかあります。すべての単語を完全に逆の順序で取得するには、次のコードをコピーしてモジュールに貼り付けます

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

セルC1では、数式は= ReverseOrder1(A1)

img7

になります。 2番目の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

セルD1では、数式は= ReverseOrder2(A1)

img9

になります。

列の順序を逆にする方法は?

列データの順序を逆にする必要がある場合は、以下のコードを詳しく調べる必要があります。

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

上記のコードは、シート1の列Aのデータをチェックしてから、シート2の順序を逆にします。下の画像を参照してください

Img11

Img12

===

テキストからのみ逆数を取得するにはどうすればよいですか?

例:「excel(123)tip」はセルの内容です出力が必要です:「excel(321)tip」

Img13

Excelでは、同じ出力を取得する方法が複数あり、VBAUDFを使用してソリューションを見つける方法も同じです。この例では、5つの異なる方法を示します。

次のコードをコピーして標準モジュールに貼り付けます:

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

セルB2では、数式は= ReverseNumber1(A2)

Img16

になります。他の4つのコードは、次の式でテストできます。

{空} 1。 = ReverseNumber2(A2)

{空} 2。 = ReverseNumber3(A2)

{空} 3。 = ReverseNumber4(A2)

{空} 4。 = ReverseNumber5(A2)

上記の5つのマクロコードはすべて同じ出力を提供します。しかしながら;彼らが最も快適なコードを採用することができます。

アクティブセルのセルコンテンツを逆にする方法は?

マクロをactivecellでのみ実行してから、コンテンツを逆にする場合。このコードは、数式を含むセルでは実行されません。

次のコードを使用します:

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

カーソルが「exceltip」を含むセルA1にある場合、上記のマクロはそれを「pitlecxe」に変換します。

結論:MicrosoftExcelの単一のソリューションに対して同じ数のUDFを持つことができます。このUDFは2003バージョンから2013まで動作します。

image 29

私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。

皆様からのご意見をお待ちしております。私たちの仕事を改善、補完、革新し、より良いものにする方法をお知らせください。 [email protected]_までご連絡ください