excel中如何让列数据,按要求比较,将结果显示在m列

b列有数据都是三位数,如果l列其中某一个四位数内的某三个数(比如l列是1382)与b列某三个数(123)相同则,该数过滤成功,1382就显示在m列。

Sub test()
M = ActiveSheet.Range("B65536").End(xlUp).Row 'B列的数据最后一行的行号
N = ActiveSheet.Range("L65536").End(xlUp).Row 'L列数据的最后一行的行号
R = 0
H = 2
Dim X, Y As String
For i = 2 To M
For j = 2 To N
X = Range("L" & j)
For k = 1 To 3
Y = Mid(Range("B" & i), k, 1)
If InStr(X, Y) > 0 Then R = R + 1
Next
If R = 3 Then
Range("M" & H) = Range("L" & j)
H = H + 1
End If
R = 0
Next
Next
MsgBox "数据处理完毕 "
End Sub
尝试一下 用这个VBA代码吧……追问

谢谢你的代码,因为c到k列有可能会跟b列一样会有数据。并且l列后面也可能会有需要过滤的数,所以我希望是用公式来实现,vba我不知道如何增加改动啊。
b列到k列称为标准数,他们会有三位数和四位数两种。最少4行,最多是15行
l列往会增加到50列,是对象数,都是四位数和五位数。每列1000行是最多的。
如果公式的话我自己复制就好办了,如果vba,如果不嫌麻烦就请帮帮忙啦

追答

朋友!你有更多的要求 应该一次性全部列出来!

这种比较 用公式 很难实现的!你应该看到,用VBA 都是那样分步来比较的,用公式 怎么能够一次做到这样复杂的比较哪?估计要使用很多辅助列才行……

就你目前的 说法,即使用了公式 估计 也是很难自己修改的吧……呵呵

你可以照猫画虎,只要 是 类似 你提出来的 这样两列来比较的情形,那么 就参照 代码中 目前引用到的 列 等 range 中的字母 修改成 你需要的 就可以了……
其他的 情况恐怕我爱莫能助了……要知道这种事情 应该一气呵成才好,每次追问 都有新情况,我很难跟上你的节拍…………

祝你一切顺利!

温馨提示:答案为网友推荐,仅供参考
相似回答