找出两列数据的差集_excel快速查找数据差异项
近來在網上看到一則查找兩列數據差異項的方法,試著做發現07版的excel根本就沒有那個功能,而且設置過程也很麻煩,有那個功夫,不如去網上找函數公式解決。今天給大家分享一下用函數組合公式和自定義函數公式兩種方法實現兩列數據差異查找并列出的效果。
案例
上圖中各部門收集的客戶名單存在不同,需要找到產品有而運營沒有的客戶名單,有人可能會直接選中兩列數據設置條件格式,突出顯示唯一值,得到下面的情況,在逐個復制過去就行了。
確實很簡單,但是模擬的數據有限,要是成百上千條數據查找,查找出來后的復制粘貼工作是很煩的。通常我們會設置函數公式處理這種問題。
解決方案
通過設置excel函數數組公式和vba編輯自定義函數兩種方法均可一次性找到差異值,并自動寫入到要求的地方。
兩種方法公式和實現效果如下圖:
1、常規組合數組公式:
=IFERROR(INDEX($B$3:$B$13,SMALL(IF(ISNUMBER(MATCH($B$3:$B$13,$A$3:$A$11,)),4^9,ROW($B$3:$B$13)-2),ROW(A1))),"")
輸入完成后ctrl+shift+enter三鍵同時按生效。
這個公式有點復雜,需要一定的函數功底才能掌握,當要比對其他列數據時,復制粘貼公式后,要修改對應的選擇單元格區域有4處,即要修改4次才能正確顯示結果,會用的人不多。對不想在函數上費精力的人來說可以用下面的自定義函數。
2、自定義函數,具體公式為:
=czbt($B$3:$B$13,$A$3:$A$11,ROW(A1))
這個函數比較簡單,函數名為"查找不同"的拼音首字符組合,比較好記。共三個參數,第一個參數$B$3:$B$13為目標單元格區域(案例為產品客戶名單),第二個參數$A$3:$A$11為對比單元格區域(案例為運營客戶名單),第三個參數為row(a1)代表查找出來的第一個差異項,隨著公式往下填充,一次找出第2、3...個差異項。當對比其他列數據時,復制粘貼公式后,只需修改對應的目標單元格區域和對比單元格區域各一次即可。函數參數設置簡單明了,容易掌握。
自定義函數的用法還是提前插入模塊,打開VBA編輯框,文件-導入文件-查找差異項.bas。或者在VBA編輯框插入模塊,在代碼區域粘貼下面的代碼即可。
Function czbt(r1 As Range, r2 As Range, k As Integer) As StringDim arr1, arr2, arr3()arr1 = r1arr2 = r2ReDim arr3(1 To Application.Max(UBound(arr1), UBound(arr2)))n = 0For i = 1 To UBound(arr1) For j = 1 To UBound(arr2) If arr1(i, 1) = arr2(j, 1) Then Exit For End If If j = UBound(arr2) Then n = n + 1 arr3(n) = arr1(i, 1) End If Next NextIf k <= UBound(arr3) Then czbt = arr3(k)Else czbt = ""End If總結
以上是生活随笔為你收集整理的找出两列数据的差集_excel快速查找数据差异项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不符合核销规则条件_对不起!您不符合20
- 下一篇: mysql 中的脏读与幻读_一文带你理解