如下面的工作表图片:
我不知道给出的数字是否都是按这样的规律,即第一个原始数据的后面几位数与第二个原始数据的前面几位数相同。如果是这个规律的话,则可以就这个具体的例子给出下面的代码来实现:
Sub SeparateNumber() Dim strFirst As String Dim strResult As String Dim StartNum As Integer Dim EndNum As String Dim i As Integer, j As Integer strFirst = Left(Range(”B1″), 1) StartNum = InStr(1, Range(”A1″), strFirst) j = 1 For i = StartNum To Len(Range(”A1″)) EndNum = Mid(Range(”A1″), i, 1) If EndNum = Left(Range(”B1″), j) Then j = j + 1 End If Next i If j > 1 Then strResult = Mid(Range(”A1″), StartNum, i - 1) End If ‘单元格C1中的数据 Range(”C1″).Value = strResult ‘单元格D1中的数据 Range(”D1″).Value = Left(Range(”A1″), StartNum - 1) ‘单元格E1中的数据 Range(”E1″).Value = Right(Range(”B1″), Len(Range(”B1″)) - j) End Sub |
代码很简单,只是运用了几个VBA函数。
其实代码可以进一步简化,因为VBA还有一个数组函数(Split函数)。
如果要将其变为通用的,则可将上述代码转化为自定义函数,并用相对量代替代码中的硬编码。 两个单元格中的数字如果不是按上面提到的规律,则可能两个单元格中的数字中间部分相同,而其它部分不同;或者一个单元格中的数字结尾部分和另一个单元格中的数字的中间部分相同。
|