有A、B两列数据,怎样根据B列中的数据对A列进行筛选,将结果放在C列?其中A列是4位数,B列是2位,行数不限

A列中的数据都是4位数,B列中的数据都是2位数。假设B列中的数据(即所设的筛选条件)对应的是A列中的数据的第1位和第3位按顺序排列成的那个数。经过B列的筛选后,结果放在C列。例如图,A列中有15个数据,但是其中的0036的第1位和第3位按顺序排列成的数是"03”,而"03”在B列这个筛选条件列里,所以0036就被筛选掉了,同理3283、3285(红色),5674(蓝色),都被B列筛选掉了,则剩余的就放在C里。 当然了,在这里B列中的01、59、81对A列中的数据起不到筛选作用,不予理会。 这个用什么实现?最好是VBA。求神人解答

给你做个VBA把。
Sub 筛选()
With ActiveSheet
a = .Range("A65536").End(xlUp).Row '取得A列有数据的行数
b = .Range("B65536").End(xlUp).Row '取得B列有数据的行数
n = 1
For i = 1 To a
k = 0
For j = 1 To b
tmp1 = Left(.Cells(j, 2).Text, 1) '取得要查找的第一个字符
n1 = InStr(.Cells(i, 1).Text, tmp1) '比对第一次,如果找到,n1会大于0
tmp2 = Right(.Cells(j, 2).Text, 1) '取得要查找的第二个字符
n2 = InStr(.Cells(i, 1).Text, tmp2) '比对第二次,如果找到,n2会大于0
If n1 And n2 Then '如果n1,n2都不等于0,那么表示数据被找到,要剔除掉,所以置k=0,退出for循环
k = 0
Exit For
Else 'n1,n2中有一个为0,表示找不到,将k累加,表示该数不适合
k = k + 1
End If
Next j
If k <> 0 Then '如果k不等于0 ,就将该数写到D列。
.Cells(n, 4).NumberFormatLocal = "@"
.Cells(n, 4).Value = .Cells(i, 1).Value
n = n + 1
End If
Next i
End With
End Sub
温馨提示:答案为网友推荐,仅供参考
相似回答