工作中總會有一些奇葩的特殊需求,最讓人頭疼的莫過于將符合條件的多個結果全部放到一個單元格內,這種匯總方式,就是傳說中的“一勺燴”啊。 舉個例子,請看下圖。 A列是某公司部門名稱,B列是人員姓名。 要求將相同部門的人員姓名填入F列對應單元格,不同人名之間以逗號間隔。 看到這里,想必有人在心里嘀咕了: 小子啊,你這數據處理不規范啊,你怎么能把這么多人名放一個單元格呢? 你這是違反數據規律,作死吧…… 停停?。 ?/span> 俺星光英明神武,壓過馬路,上過房梁,當然知道這數據的存放格式是有待商榷的,是不利于以后數據再處理的,是有害有毒有失水準滴…… 然而,可是!但是!不得不說的是?。?/span> 作為表哥表妹大軍中的一員,俺更深知表格數據生殺予奪從不在我,而在于那位老是板著臉的……老板。 比如: 老板讓你處理一段數據。 你對老板說:“老板,這數據我不能處理,為啥嘞?——因為你這數據不規范!!” 老板:“……” 老板讓你把所有同一類型的內容放到一個單元格里。 你對老板說:“老板,這數據我也不能處理,為啥嘞?——因為你要的結果數據不規范?。 ?/span> 老板:“……” 言歸正傳,說說這道題的解法: 首先在C2輸入公式: =IF(A2=A1,C1&','&B2,B2) 向下復制填充。 F2輸入公式: =LOOKUP(1,0/(E2=$A$2:$A$9),C$2:C$9) 向下復制填充,得到最終結果。 這個解法使用了輔助列的方式。 C列為輔助列,是一個簡單的IF函數。 以C2的公式為例: =IF(A2=A1,C1&','&B2,B2) 先判斷A2和A1的值是否相等,如果相等,則返回C1&','&B2,如果不等,則返回B2。 此處A2和A1的值不相等,因而公式返回B2的值'祝洪忠'。 在公式向下復制填充的過程中,該公式得出的結果,將被公式所在單元格下方的下一個公式所使用,于是形成人名累加的效果。 比如C3單元格公式: =IF(A3=A2,C2&','&B3,B3) A3和A2的值相等,返回真值C2&','&B3。 C2為上個公式所返回的結果B2(祝洪忠),B3的值是'星光',所以C3最后結果為'祝洪忠,星光'。 輔助列公式輸入完成后,在F列使用了一個常用的LOOKUP函數套路,得到最終結果: =LOOKUP(1,0/(E2=$A$2:$A$9),C$2:C$9) LOOKUP的這個套路,忽略錯誤值,總是取得最后一個符合條件的結果,我們可以總結為: =LOOKUP(1,0/(條件區域=指定條件),要返回的目標區域) 該公式以0/(E2=$A$2:$A$9)構建了一個由0和錯誤值#DIV/0!組成的內存數組,再用永遠大于0的1作為查找值,于是查找出最后一個滿足部門等于E2的C列結果,即A列最后一個廣告部所對應的C列值,也就是C2單元格中的內容。 圖文作者:看見星光 |
|
來自: langlangok > 《excel》