将前缀转换为整列后缀的策略?
我有一个列数据布局如下:
MO10TRSAB MO123FJKDAS MO02JTXZ*
它基本上是MO [0-9] {2,3} [AZ] +的格式。 用简单的英语,MO后跟1到3 (由于我自己的失败编辑)整数,然后是一串不确定长度的字母和/或符号(但不应超过10;但这不是要求)
我想对整列进行反转,使其具有[AZ] + MO [0-9] {2-3}的格式,即:
TRSABMO10 FJKDASMO123 JTXZ*MO02
我不确定如何在Excel VBA中执行此操作,主要是因为我不确定RegEx在Excel-VBA中是如何工作的。 你们能帮忙吗?
或者只是使用这个公式:
=IF(ISERROR(VALUE(MID(H10;5;1)));RIGHT(H10;LEN(H10)-4) & LEFT(H10;4);RIGHT(H10;LEN(H10)-5) & LEFT(H10;5))
在这种情况下,值是H10,
修改后的要求和parsing(A1)固定宽度的位置3,4和5,这可能适合:
=IF(ISTEXT(B1),B1&C1&D1&A1,IF(ISTEXT(C1),C1&D1&A1&B1,D1&A1&B1&C1))
编辑:代码更新为最近编辑的问题。
尝试这个:
将此代码插入到模块中。
Function ReverseString(ByVal original As String) As String Dim re As Object Set re = CreateObject("vbscript.regexp") re.Pattern = "(MO[\d]{1,3})(.+)" re.Global = True ReverseString = re.Replace(original, "$2$1") End Function
那么你可以使用任何你想要的方式。 例如你可以使用它作为这样的公式:
=ReverseString(A1)
Public Function str(ByVal my_string As String) As String() Dim Numberstring As String Dim Stringvalue As String Dim Reversestring() As String ReDim Reversestring(Len(my_string) - 1) For i = 1 To Len(my_string) Reversestring(i - 1) = Mid$(my_string, i, 1) Next For i = 2 To Len(my_string) - 1 If IsNumeric(Reversestring(i)) Then numbersstring = numbersstring & Reversestring(i) Else Stringvalue = Stringvalue & Reversestring(i) End If Next finalstring = Stringvalue & "MO" & numbersstring str = finalstring End Function