工作中總會有一些奇葩的特殊需求,最讓人頭疼的莫過于將符合條件的多個結(jié)果全部放到一個單元格內(nèi)。
舉個例子,請看下圖。
A列是某公司部門名稱,B列是人員姓名。
要求將相同部門的人員姓名填入F列對應單元格,不同人名之間以逗號間隔。
看到這里,想必有人在心里嘀咕了:
小子啊,你這數(shù)據(jù)處理不規(guī)范啊,怎么能把這么多人名放一個單元格呢?這是違反數(shù)據(jù)規(guī)律,作死吧……
停停。
作為表哥表妹大軍中的一員,俺更深知表格數(shù)據(jù)生殺予奪從不在我,而在于那位老是板著臉的……老板。
言歸正傳,說說這道題的解法:
首先在C2輸入公式:
=IF(A2=A1,C1&”,”&B2,B2)
向下復制填充。
F2輸入公式:=LOOKUP(1,0/(E2=$A$2:$A$9),C$2:C$9)
向下復制填充,得到最終結(jié)果。
這個解法使用了輔助列的方式。
C列為輔助列,是一個簡單的IF函數(shù)。
以C2的公式為例:
=IF(A2=A1,C1&”,”&B2,B2)
先判斷A2和A1的值是否相等,如果相等,則返回C1&”,”&B2,如果不等,則返回B2。
此處A2和A1的值不相等,因而公式返回B2的值”祝洪忠”。
在公式向下復制填充的過程中,該公式得出的結(jié)果,將被公式所在單元格下方的下一個公式所使用,于是形成人名累加的效果。
比如C3單元格公式:
=IF(A3=A2,C2&”,”&B3,B3)
A3和A2的值相等,返回真值C2&”,”&B3。
C2為上個公式所返回的結(jié)果B2(祝洪忠),B3的值是”星光”,所以C3最后結(jié)果為”祝洪忠,星光”。
輔助列公式輸入完成后,在F列使用了一個常用的LOOKUP函數(shù)套路,得到最終結(jié)果:
=LOOKUP(1,0/(E2=$A$2:$A$9),C$2:C$9)
LOOKUP的這個套路,忽略錯誤值,總是取得最后一個符合條件的結(jié)果,我們可以總結(jié)為:
=LOOKUP(1,0/(條件區(qū)域=指定條件),要返回的目標區(qū)域)
該公式以0/(E2=$A$2:$A$9)構(gòu)建了一個由0和錯誤值#DIV/0!組成的內(nèi)存數(shù)組,再用永遠大于0的1作為查找值,于是查找出最后一個滿足部門等于E2的C列結(jié)果,即A列最后一個廣告部所對應的C列值:C2。
如果你使用的是Excel2019或是Office365,那就可以使用TEXTJOIN函數(shù)了,這個函數(shù)在WPS2019中也有哦。
在F2單元格輸入以下公式,按住SHift+Ctrl不放,按回車,OK了。
=TEXTJOIN(“,”,1,IF(A$2:A$9=E2,B$2:B$9,””))
TEXTJOIN函數(shù)的用法為:
=TEXTJOIN(間隔符號,要不要忽略空文本,要合并的內(nèi)容)
公式中要合并的內(nèi)容為:
IF(A$2:A$9=E2,B$2:B$9,””)
也就是如果A$2:A$9等于E2,就返回B$2:B$9對應的內(nèi)容,否則返回空文本””,結(jié)果是一個傳說中的內(nèi)存數(shù)組:
{“祝洪忠”;”星光”;””;””;””;””;””;””}
TEXTJOIN函數(shù)對IF函數(shù)得到的內(nèi)存數(shù)組進行合并,第一參數(shù)指定使用間隔符號為逗號,第二參數(shù)使用1,表示忽略內(nèi)存數(shù)組中的空文本。
承擔因您的行為而導致的法律責任,
本站有權(quán)保留或刪除有爭議評論。
參與本評論即表明您已經(jīng)閱讀并接受
上述條款。