《Excel 2010 函数与公式》疑难140
如图,需要找出A列有B列没有的数据,
1.jpg
书上给出的Excel函数如下,要用到可怕的数组函数,括号数量堪比Lisp:
{=INDEX(A:A,SMALL(IF(ISNA(MATCH($A$3:$A$18,$B$3:$B$10,0))*(MATCH($A$3:$A$18,$A$3:$A$18,0)=ROW($3:$18)-2),ROW($3:$18),4^8),ROW(1:1)))&""}
使用VBA就清晰多了,新建两个数组,分别存储两列数据,比较键值即可:
Sub A列有B列无()
Dim d, d1, Temp
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
For Each Temp In Range("b3:b10")
d1(Temp.Value) = 1
Next
For Each Temp In Range("a3:a18")
If Not d1.exists(Temp.Value) Then d(Temp.Value) = 1
Next
arr = d.keys
Range("D3").Resize(UBound(arr) + 1, 1) = WorksheetFunction.Transpose(arr)
End Sub
网友评论