2016-10-19 17 views
-2

私はVBAにルーキーです。 VBA-Excelにデータを逆にすることについていくつか問題があります。私のデータは、 "3> 8"から "8> 3"を逆にすることができる関数 "function"を使用して "3> 86> 1526> 41逆。しかし、私は "6> 15"と "26> 41"を "15> 6"と "41> 26"に逆転できませんでした。それは "51> 6"と "14> 62"、その失敗は "15> 6"と "41> 26"になります。選択したセル内のテキストを反転する - VBA

リバース= StrReverse(トリム(文字列))

私の問題を解決してくださいとコメントに感謝するために私を助けて。

+0

私たちはあなたが使用しているコードを表示できますか? –

+2

Excel式でも行えます。=右(A1、Find( ">"、A1))& ">"&Left(A1、Find( ">"、A1)-1) ' – Slai

+1

スズ、文字通り。 Excelは15が数字だと理解していません.1と5を読み、それを51に戻します。上記の@Slaiメソッドを使用します。 –

答えて

1

まず、セル内の ">"の位置を見つける必要があります。これを行うには、セルの内容を取得し、文字列として扱い、 ">"を見つけてください。

これは、行の先頭のarrowPositionで行われます。これはあなたの中に元の文字列「>」の位置の整数値である

次はその後「>」

後に「>」までのテキストやテキストを抽出する権利を抽出するために、左を使用新しいストリングを作成する& ">" & leftStr。

注:私はSheet1 B5からデータを入力しましたが、正しい形式の文字列であれば、任意のソースを使用できます。

Sub Test() 

Dim myString As String 

myString = Sheets("Sheet1").Range("B5") 
Debug.Print myString 
Debug.Print reverseString(myString) 

End Sub 


Function reverseString(inputString As String) As String 

Dim leftStr As String 
Dim rightStr As String 
Dim arrowPosition As Integer 

arrowPosition = InStr(1, inputString, ">") 
leftStr = Left(inputString, arrowPosition - 1) 
rightStr = Right(inputString, Len(inputString) - arrowPosition) 
reverseString = rightStr & ">" & leftStr 

End Function 
+0

ありがとうございます。私はあなたの箱から試して適用します – YONeGo

1

あなたはVBAを探すという理由だけで、あなたのコードにこの機能を追加することができます。もちろん

Function rev(t As String) As String 
    s = Split(t, ">", 2) 
    rev = s(1) & ">" & s(0) 
End Function 

をあなたが2数を逆転している場合にのみ、それ以外の場合はあなたがループ「のよ"しかし、関数はその有用性を失うでしょう

+0

あなたの短いコードのカブに感謝します。宜しくお願いします – YONeGo

関連する問題