反转单元格中的一些文本 - VBA

时间:2016-10-19 09:25:26

标签: vba excel-vba excel

我是VBA的新手。关于在 VBA-Excel 上撤消我的数据,我遇到了一些问题。我的数据是“ 3> 8 6> 15 26> 41 (差异细胞上的每个数据)”我可以逆转“3> ; 8“到”8> 3“通过使用反向功能来满足我的要求。但我不能将“6> 15”和“26> 41”反转为“15> 6”和“41> 26”。失败的将是“51> 6”和“14> 62”,我想成为“15> 6”和“41> 26”。

Reverse = StrReverse(Trim(str))

请帮助我解决我的问题并感谢您的评论。

2 个答案:

答案 0 :(得分:1)

首先需要找到“>”的位置在牢房里。你通过获取单元格的内容并将其作为字符串处理并找到“>”

来完成此操作

这是在开头arrowPosition的行中完成的。这是“>”位置的整数值你原来的字符串

接下来使用Left将文本提取到“>”以及在“>”之后提取文本的权利

然后建立一个新的权利字符串& “>” 中&安培; leftStr。

注意我从Sheet1 B5输入了我的数据,但只要它是一个格式正确的String就可以使用任何源。

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

答案 1 :(得分:1)

只是因为你在寻找VBA,你可以将这个功能添加到你的代码中:

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

当然只有你必须反转2号,否则你将循环“s”,但该功能将失去其用处