王志軍



同事前來求助,如圖1所示,A列是某單位的部門名稱,B列是相應員工的姓名,現在要求將相同部門的員工姓名填入F列對應的單元格,不同人名之間以逗號“,”分隔。由于實際的數據量非常大,手工操作顯然是相當麻煩,有沒有簡單一些的實現方法呢?
我們可以借助輔助列解決這一問題,選擇C2單元格,在編輯欄輸入公式“=IF(A2=A1,C1&”,”&B2;,B2)”,這里首先判斷A2和A1的值是否相等,如果相等則返回“C1&”,”&B2;”的結果,否則返回B2。公式執行之后向下拖拽或雙擊填充柄,公式向下復制填充的過程中,該公式得到的結果將會被公式所在單元格下方的下一個公式所使用,于是形成人名累加的效果,很快就可以看到圖2所示的效果。
選擇F2單元格,在編輯欄輸入公式“=LOOKUP(1,0/fE2=$A$2:$A$9),C$2:C$9)”,這里的LOOKUP函數忽略錯誤值,總是取得最后一個符合條件的結果,該公式以“0/(E2=$A$2:$A$9)”構建了一個由0和錯誤值#DIV/0!組成的內存數組,再使用大于0的1作為查找值,于是得出最后一個滿足部門等于E2的C列結果,即A列最后一個行政辦所對應的C列值C2,公式執行之后向下拖拽或雙擊填充柄,最終效果如圖3所示。
如果你使用的Excel是最新的2016或365的版本,那么也可以不使用輔助列,直接使用公式“=TEXTJON(”,”,1,IF($A$2:$A$10=E2,B$2:B$10,""))”。公式中需要合并的內容為“IF($A$2:$A$IO=E2,B$2:B$10,"")”,也就是說如果等于E2,則返回對應的內容,否則返回空文本"";TEXTJOIN函數的用法為“=TEXTJOIN(間隔字符,是否忽略空單元格,要合并的內容)”,這里是對IF函數得到的內存數組進行合并,合并時使用逗號“,”進行分隔,最終效果完全相同。