兩列數據找差異,我們一般都是用條件格式 - 突出顯示單元格格規則 - 重復值來快速完成。
但如果同一列中有重復值 ,核對結果就出錯了。
蘭色多年以來一直想解決這個問題,直到昨天,蘭色用VBA編寫了一個新功能,完美的解決了兩列核對的問題。
選中兩列按
Ctrl
+
m
即可找出兩列重復值。
做會計工作的同學都是遇到過一對一的核對情況,當核對的值出現多次時,需要進行一對一的核對。如下圖所示,第一列有一個100,第二列出現兩個100,那麽一對一核對結果時第2列第2個100不應該填充顏色。
這個用 Ctrl + m 同樣可以完成。
想用不同顏色顯示一對一核對結果?當然可以!
看到這麽好用的核對功能,你是不是也想試一下Ctrl+m ? 先別試,因為你試了也沒效果。你需要跟蘭色一起做以下以步才可使用。
第1步 開啟你要做核對的表格,工作表標簽右鍵 - 點選檢視程式碼。在彈出的新視窗插入 - 模組,然後復制下面的程式碼貼上到右側視窗中。
Sub 核對()
Dim k
k = 3
If k = 1 Then
普通核對
ElseIf k = 2 Then
單色一對一核對
ElseIf k = 3 Then
多色一對一核對
End If
End Sub
Sub 普通核對()
Dim arr1, arr2
Dim 紅 As Byte, 綠 As Byte, 黃 As Byte
Set rg = Selection
If rg.Areas.Count <> 2 Then Exit Sub
arr1 = rg.Areas(1)
arr2 = rg.Areas(2)
'開始核對
'核對前刪除顏色
rg.Interior.ColorIndex = xlNone
For x = 1 To UBound(arr1)
For y = 1 To UBound(arr2)
If arr1(x, 1) = arr2(y, 1) Then
rg.Areas(1)(x).Interior.Color = RGB(255, 199, 206)
rg.Areas(2)(y).Interior.Color = RGB(255, 199, 206)
End If
Next y
Next x
End Sub
Sub 單色一對一核對()
Dim arr1, arr2, arr3(1 To 10000)
Dim 紅 As Byte, 綠 As Byte, 黃 As Byte
Set rg = Selection
If rg.Areas.Count <> 2 Then Exit Sub
arr1 = rg.Areas(1)
arr2 = rg.Areas(2)
'開始核對
'核對前刪除顏色
rg.Interior.ColorIndex = xlNone
For x = 1 To UBound(arr1)
For y = 1 To UBound(arr2)
If arr1(x, 1) = arr2(y, 1) And arr3(y) <> 1 Then
rg.Areas(1)(x).Interior.Color = RGB(255, 199, 206)
rg.Areas(2)(y).Interior.Color = RGB(255, 199, 206)
arr3(y) = 1
GoTo 10
End If
Next y
10:
Next x
End Sub
Sub 多色一對一核對()
Dim arr1, arr2, arr3(1 To 10000)
Dim 紅 As Byte, 綠 As Byte, 黃 As Byte
Set rg = Selection
If rg.Areas.Count <> 2 Then Exit Sub
arr1 = rg.Areas(1)
arr2 = rg.Areas(2)
'開始核對
'核對前刪除顏色
rg.Interior.ColorIndex = xlNone
For x = 1 To UBound(arr1)
For y = 1 To UBound(arr2)
If arr1(x, 1) = arr2(y, 1) And arr3(y) <> 1 Then
紅 = Application.RandBetween(1, 255)
綠 = Application.RandBetween(1, 255)
黃 = Application.RandBetween(1, 255)
rg.Areas(1)(x).Interior.Color = RGB(紅, 綠, 黃)
rg.Areas(2)(y).Interior.Color = RGB(紅, 綠, 黃)
arr3(y) = 1
GoTo 10
End If
Next y
10:
Next x
End Sub
註:修改程式碼中
K
的值即可在幾種核對模式中切換(
1是普通核對,2是單色一對一核對,3是多色一對一核對
)
Sub 核對()
Dim k
k = 3
If k = 1 Then
普通核對
ElseIf k = 2 Then
單色一對一核對
ElseIf k = 3 Then
多色一對一核對
End If
第2步 開發工具 - 宏 - 選取「核對」 - 選項 - 快捷鍵後輸入字母m
第3步 檔另存為啟用宏的檔
完成以上以步後,你就可以在當前檔中使用Ctrl + m了。
也許你會問能不能在所有開啟的Excel檔中使用它?可以,但你需要另存為載入宏檔,然後再載入它即可。但蘭色一般不建議這樣做,因為用宏做成的功能執行後不能復原,萬一你不小心按了Ctrl+m會破壞你表格的格式。
蘭色說 :WPS需要支持VBA宏安裝VBA外掛程式後才能用本文程式碼( 因為外掛程式不方便分享,所以同學們可以去網上搜搜,買過蘭色樣版的去地圖樣版中找、四合一教程的去圖表樣版中有提供 )
蘭色根據多年經驗,錄制了一全套適合新手和初中級階段使用者學習的Excel教程。包括 Excel表格88個函式用法( 即將更新幾十個新函式 )、119個使用技巧、透視表從入門到精通50集、圖表從入門到精通186集 。( 綠卡會員 有效期內 免費 )詳情點選下方連結