1、有朋友要求 Excel 工作表的 A1 单元格和 B1 单元格中有两个数字,这两个数字有一部分相同,现在要找出其中相同的数字并写入单元格 C1,找出 A1 中有而 B1中没有的数字并写入单元格 D1,找出 B1 中有而 A1 中没有的数字并写入单元格E1。如下面的工作表图片:我不知道给出的数字是否都是按这样的规律,即第一个原始数据的后面几位数与第二个原始数据的前面几位数相同。如果是这个规律的话,则可以就这个具体的例子给出下面的代码来实现:Sub SeparateNumber()Dim strFirst As StringDim strResult As StringDim StartNum A
2、s IntegerDim EndNum As StringDim i As Integer, j As IntegerstrFirst = Left(Range(”B1), 1)StartNum = InStr(1, Range(”A1), strFirst)j = 1For i = StartNum To Len(Range(”A1)EndNum = Mid(Range(”A1), i, 1)If EndNum = Left(Range(”B1), j) Thenj = j + 1End IfNext iIf j 1 ThenstrResult = Mid(Range(”A1), Start
3、Num, 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 函数)。 如果要将其变为通用的,则可将上述代码转化为自定义函数,并用相对量代替代码中的硬编码。 两个单元格中的数字如果不是按上面提到的规律,则可能两个单元格中的数字中间部分相同,而其它部分不同;或者一个单元格中的数字结尾部分和另一个单元格中的数字的中间部分相同;等等。