大家好,今天要分享的是合并名單的問題。先來看下數據,如下圖所示。左表是源數據,是一個班級姓名表,現在要把相同班級的姓名合并在一起,效果如右表所示。
關于這個問題,有很多解決方法。第一種就是用函數textjoin,之前也說過這種方法,可以參考《史上最強文本連接函數textjoin的用法》這篇文章。今天再簡單說一下。
在E2單元格輸入公式=TEXTJOIN("\",1,IF(D2=A$2:A$10,B$2:B$10,"")),按ctrl+shift+enter三鍵結束,向下填充。
公式中關鍵的部分是if函數,用來判斷A列的班級是否和D2的班級相同,如果相同返回對應的姓名,否則返回空文本,形成如下的數組{"紅蓮";"衛(wèi)莊";"";"老子";"";"";"";"";""},最后用textjoin合并起來就可以了。
你說我的excel中沒有textjoin這個函數,那么可以使用power query(簡稱pq)來完成,也就是第二種方法。
首先選中班級姓名表中的任意單元格,點【數據】-【從表格】-勾選包含標題-確定,進入pq編輯器。
進入pq編輯器后如下圖所示。
點擊fx添加步驟,輸入公式= Table.Group(更改的類型,"班級",{"合并名單",each Text.Combine([姓名],"\")}),按回車確定,得到下圖的效果就完成合并了。
點擊【主頁】選項卡-點擊【關閉并上載】,完成。這樣就上載到excel工作表中。
如果你說pq我也沒有,那么還可以用輔助列的方法來合并,這就是第三種方法。輔助列可以用vlookup,也可以用lookup。
先用vlookup,在C列添加輔助列,C2單元格輸入公式=B2&IFNA("\"&VLOOKUP(A2,A3:C$11,3,),""),向下填充,得到下圖C列的結果,這樣把各班所有的姓名合并到第一次出現的位置,接下來就可以用vlookup查找了。這個公式還是有點難理解的,有點迭代計算的意思,同時注意引用的方式(相對絕對引用)和位置(有點錯位)。
在F2單元格輸入公式=VLOOKUP(E2,A$1:C$10,3,),向下填充,完成。
用lookup也可以,同樣C列添加輔助列,在C2單元格輸入公式=IFERROR(LOOKUP(1,0/(A2=A$1:A1),C$1:C1)&"\","")&B2,向下填充,得到下圖C列的效果,可以看到各班合并后的所有姓名出現在最后一次,恰好和vlookup相反,vlookup是出現在第一次。
由于合并后的名單在最后一次出現,那么還是用lookup查找。在F2單元格輸入公式=LOOKUP(1,0/(A$2:A$10=E2),C$2:C$10),向下填充,完成。
這幾種方法,總有你能用上的,趕緊練習起來吧。
鏈接:
https://pan.baidu.com/s/1iZ4CxXZnmUzAIf7OTy1RQQ
提取碼:lrho