有如下圖所示的兩組數(shù)據(jù),為兩組用戶ID數(shù)據(jù),為了標(biāo)識(shí)出來,我們分別命名為用戶ID_1和用戶ID_2。
我們先介紹第一種方法,使用公式的方法來查找異同。
首先我們先來分析一下查找異同的原理,異同異同,就是有什么一樣的,什么不一樣的,一樣就是兩組數(shù)據(jù)都有,不一樣就是兩組數(shù)據(jù)中一個(gè)有一個(gè)沒有。換言之,有就是同,換成技術(shù)語言就是能在兩個(gè)數(shù)據(jù)表中查到,那什么叫能查到呢,開題中我們提到通過【Ctrl F】的方法,那么換成公式,我們可以理解為從計(jì)數(shù)上,應(yīng)該是同一個(gè)元素兩個(gè)都有,或者從查詢上,應(yīng)該可以通過一組數(shù)組中元素查詢到另一組數(shù)據(jù),通過這個(gè)分析,我們就可以將問題化解為真正的技術(shù)語言,我們可以通過計(jì)數(shù)和查詢兩種方法來查詢到異同。
1)計(jì)數(shù)法
在O2單元格輸入
=COUNTIF($K$2:$K$28,N2)
這組公式是用來做什么的呢?我們知道,COUNTIF 函數(shù)返回的是某個(gè)值在某個(gè)區(qū)域中計(jì)數(shù),那么COUNTIF($K$2:$K$28,N2)返回的就是N2這個(gè)單元格的值在$K$2:$K$28這個(gè)單元格區(qū)域中的計(jì)數(shù),當(dāng)返回的值不等于0,怎表示N2在$K$2:$K$28區(qū)域中是存在的,也就是說N2是兩個(gè)區(qū)域中的共同部分,因?yàn)镹2已經(jīng)在用戶ID_2中,如果在用戶ID_1的計(jì)數(shù)大于0,就表示也在用戶ID_1中,計(jì)算結(jié)果如下圖所示:
將O2的公式填充到用戶ID_2的相鄰區(qū)域最后一行,如下圖所示:
為了要找到異同,我們就是要找到計(jì)算結(jié)果中0和非0的項(xiàng)目,接下來我們只需要篩選就可以找到這個(gè)結(jié)果,操作方法如下圖所示:
需要注意的是,因?yàn)槲覀冞@兩組數(shù)據(jù)比較簡(jiǎn)單,而且組內(nèi)的數(shù)據(jù)是沒有重復(fù)的,當(dāng)組內(nèi)的數(shù)據(jù)有重復(fù)時(shí),通過COUNTIF函數(shù)做計(jì)數(shù)返回的結(jié)果可能就不僅僅是0和1,也許有可能返回的是大于1的整數(shù),這個(gè)也代表是重復(fù),換句話說,我們只需要判斷0和非0,其中0就是兩組數(shù)據(jù)中不同的數(shù)據(jù),而非0表示的是兩組數(shù)據(jù)中共同的數(shù)據(jù)項(xiàng)。
2)查詢法
除了使用計(jì)數(shù)法外,我們還可以讓Excel 模擬Ctrl F的效果,即用查詢法來識(shí)別兩組數(shù)據(jù)的異同,方法和計(jì)數(shù)法有點(diǎn)類似。
我們?cè)赑2單元格輸入:
=VLOOKUP(N2,K:K,1,)
效果如下圖所示:
返回的結(jié)果中我們發(fā)現(xiàn)有錯(cuò)誤值,如果有朋友學(xué)習(xí)過之前我們介紹過的VLOOKUP函數(shù),那么就知道這個(gè)錯(cuò)誤值表示的是查詢不到數(shù)據(jù),即查詢的區(qū)域找不到你想要查詢的結(jié)果,和我們使用【Ctrl F】彈出錯(cuò)誤對(duì)話框一樣,同樣的理解,當(dāng)出現(xiàn)錯(cuò)誤值值,表示的是這個(gè)值在另一組數(shù)據(jù)中查詢不到,也就是兩組數(shù)據(jù)中的不同的部分,接下來的操作就是和計(jì)數(shù)法一樣,只要篩選出錯(cuò)誤值,就可以得到兩組數(shù)據(jù)不同的部分,在這里就不再贅述了。
上述介紹了通過公式的方法來找到兩組數(shù)據(jù)的異同,細(xì)心的朋友也許會(huì)問,如果我的數(shù)據(jù)量足夠大,比如說兩組分別為20-30萬行的數(shù)據(jù),如果使用公式的方法,那計(jì)算量老嗨了去了,運(yùn)算速度也會(huì)很慢,是否有其他的方法呢?
對(duì)于比較大的數(shù)據(jù)量,我們之前介紹過,首先我們要想到的是是否可以使用透視表來處理,因?yàn)閿?shù)據(jù)透視表背后是類似數(shù)據(jù)庫邏輯的處理方法,它的運(yùn)算效率一般都會(huì)比公式要高很多,下面我們就介紹如何使用數(shù)據(jù)透視表來解決這個(gè)問題。
先將兩組數(shù)據(jù)粘貼到一起,并加上兩組數(shù)據(jù)的標(biāo)識(shí)項(xiàng),效果如下圖所示:
創(chuàng)建數(shù)據(jù)透視表,將判斷項(xiàng)放到列標(biāo)簽和數(shù)據(jù)項(xiàng),效果如下圖所示:
數(shù)據(jù)計(jì)算出來的結(jié)果就是每個(gè)用戶ID分別在每個(gè)數(shù)據(jù)組中的計(jì)數(shù)值,最后是一個(gè)合計(jì)值。
根據(jù)這個(gè)結(jié)果,效仿剛才使用計(jì)數(shù)的方法,我們就可以通過這個(gè)計(jì)數(shù)來判斷是否兩個(gè)數(shù)據(jù)組都有,因?yàn)榭紤]到組內(nèi)無重復(fù)的現(xiàn)象,我們可以針對(duì)合計(jì)排序,如果合計(jì)等于1,則只表示只有一個(gè)組有,而如果合計(jì)等于2,表示兩個(gè)組都有,這也就是異同的區(qū)分方法,操作方法如下圖所示:
通過下圖,我們就可以很清晰看到哪些是相同的,哪些是不同的。
以上兩組數(shù)據(jù),如果組內(nèi)有重復(fù),我們可以先用【剔除重復(fù)項(xiàng)】先做組內(nèi)唯一值處理,然后再用透視表。
另外,如果不想使用復(fù)制粘貼合并兩組數(shù)據(jù),也可以使用Sql 將兩組數(shù)據(jù)合并起來,再用透視表,不過還是建議使用復(fù)制粘貼先合并數(shù)據(jù)列表,這個(gè)操作比較簡(jiǎn)單一些。
聯(lián)系客服