王志軍
中國式表格有時會有一些比較特殊的需求,如圖1所示,A列是單位的部門名稱,B列是人員姓名,現(xiàn)在需要根據(jù)E列的部門名稱,將符合條件的部門人員全部放到F列的一個單元格內(nèi),不同姓名之間使用逗號間隔。
如果數(shù)據(jù)不是太多,手工復(fù)制、粘貼就可以了,但往往實際的數(shù)據(jù)量非常大,而且經(jīng)常需要增加或減少人員,這就需要好好規(guī)劃了。下面介紹兩種不同版本的解決思路。
一、Excel 2019/365版本
我們可以借助TEXTJOIN函數(shù)完成上述任務(wù),這個函數(shù)的語法如下:
=TEXTJOIN(間隔符號,要不要忽略空單元格,要合并的內(nèi)容)
選擇F2單元格,在編輯欄輸入公式“=TEXTJOIN(",",1,IF(A$2:A$13=E2,B$2:B$13,""))”。需要合并的內(nèi)容為“IF(A$2:A$13=E2,B$2:B$13,"")”,也就是說如果A$2:A$13等于E2,那么就返回B$2:B$13對應(yīng)的內(nèi)容,否則返回空文本"";第一參數(shù)指定使用的間隔符號為逗號;第二參數(shù)為1,表示忽略內(nèi)存數(shù)組中的空文本。按下“Ctrl+Shift+Enter”組合鍵轉(zhuǎn)換為數(shù)組公式,按下回車鍵,向下拖曳或雙擊填充柄,就可以看到如圖2所示的合并結(jié)果。
需要提醒的是,WPS 2019也可以使用這個函數(shù)。
二、Excel低版本
如果使用的Excel或WPS不符合上面的版本條件,那么可以借助輔助列和傳統(tǒng)函數(shù)解決這一問題。
首先對數(shù)據(jù)區(qū)域按照部門進(jìn)行排序,選擇C列作為輔助列,在C2單元格輸入公式:=IF(A2=A1,C1&","&B2,B2)。這里首先判斷A2和A1的值是否相等,如果相等,則返回C1&","&B2,如果不等,則返回B2。在公式向下復(fù)制填充的過程中,該公式得出的結(jié)果,將被公式所在單元格下方的下一個公式所使用,于是形成人名累加的效果。執(zhí)行公式之后向下復(fù)制填充,效果如圖3所示。
在F2單元格輸入公式:=LOOKUP(1,0/(E2=$A$2:$A$13),C$2:C$13)。這里以0/(E2=$A$2:$A$13)構(gòu)建了一個由0和錯誤值#DIV/0!組成的內(nèi)存數(shù)組,再用永遠(yuǎn)大于0的1作為查找值,于是查找出最后一個滿足部門等于E2的C列結(jié)果,即A列最后一個“辦公室”所對應(yīng)的C列值。執(zhí)行公式之后向下復(fù)制填充,可以得到如圖4所示的最終結(jié)果。
補(bǔ)充:如果需要將一個單元格的姓名按部門分拆出來,可以借助Power Query的逆透視功能實現(xiàn)。