有朋友问,Excel工作表的单元格A1和单元格B1有两个数字,这两个数字有些相同。现在我们需要找出相同的数字,并将其写入C1单元,找出A1单元中的数字,但不要写入B1单元,并将其写入D1单元,找出B1单元中的数字,但不要写入A1单元,并将其写入E1单元。
如下面的工作表图片:
不知道给出的数字是否都遵循第一个原始数据的最后几个数字和第二个原始数据的前几个数字相同的规律。如果这是规则,可以给出下面的代码来实现这个具体的例子:
sub separate number()Dim strFirst As StringDim strResult As StringDim StartNum As IntegerDim EndNum As StringDim I As整数,j As IntegerstrFirst=左(范围(“B1”),1)StartNum=InStr(1,范围(“A1”),strFirst)j=1For i=StartNum To Len(范围(“A1”))EndNum=中(范围(“A1”),I,1)如果EndNum=左(范围(“B1”),j)Thenj=j 1 End ifndvalue=单元格中strsult的数据范围(“D1”)。value=left(范围(“A1”)、Startnum-1)‘E1单元格中的数据范围(“E1”)。value=right(range(“B1”))、len(range(“B1”))-j)Endsub代码非常简单,只是使用了几个VBA函数。讨论:
实际上,代码可以进一步简化,因为VBA还有一个数组函数(Split函数)。
如果想让它通用,可以把上面的代码转换成自定义函数,用相对量替换代码中的硬编码。
如果两个单元格中的数字不遵循上述规则,则两个单元格中数字的中间部分可能相同,但其他部分不同。或者一个单元格中数字的结尾部分与另一个单元格中数字的中间部分相同;等一下。
有兴趣的朋友可以继续学习。