這種根據條件來進行Excel合并單元格內容的題目,有點難度,老師提供了函數解法和數據透視表中CONCATENATEX函數解題。
跟大家分享的仍然是學員在工作中遇到的求助案例,她需要將相同編號對應的人名合并到一個單元格內,也就是說她想要將下圖【表1】轉換成【表2】的樣式。喲西,好家伙,這個表有16000多行,要是手工做,那不得累出肩周炎、下肢靜脈曲張等毛病。首先,我們先來看下她要的效果:
【表1】原表↓ 【表2】需要的效果,見下圖↓
一、 首先,我們先來說說函數解:(注意在此題中如使用函數解,A列必須要先排序,將同樣編號的排到一起這是關鍵。后面我會介紹另外一種透視表的解法,什么,你說透視表做不到,今天我就讓你瞧一瞧,^-^)
1.首先在C列加一輔助列,標記上逗號 2.在D2輸入公式:=IF(A2=A3,"",PHONETIC(INDIRECT("b"&MATCH(A2,$A$1:A565,0)):C2))并將其下拉填充至末尾?! ?.篩選D列不為空的即獲得需要的效果?! ⌒Ч缦聢D所示:↓
我們來簡單說下上面公式的含義: MATCH(A2,$A$1:A565,0)這段是指找各個編碼第一次出現的起始位置,MATCH函數是EXCEL主要的查找函數之一,當MATCH函數第三參數為0時表示精確查找,該函數通常有以下幾方面用途: (1)確定列表中某個值的位置; (2)對某個輸入值進行檢驗,確定這個值是否存在某個列表中; (3)判斷某列表中是否存在重復數據; (4)定位某一列表中最后一個非空單元格的位置?! 〖记桑翰檎椅谋局禃r,函數 MATCH 不區分大小寫字母?! NDIRECT("b"&MATCH(A3,$A$1:A566,0)):C3)這段是將MATCH找到的起始位置與C列當前行所在的單元格做為終點進行連接形成單元格區域,隨著下拉它會動態變化,這是相對引用的特點,然后利用INDIRECT間接引用得到該區域內的值。 PHONETIC(INDIRECT("b"&MATCH(A2,$A$1:A565,0)):C2)這段是將上一步所獲得的值進行拼裝,將其連接到一起?! ?IF(A2=A3,"",PHONETIC(INDIRECT("b"&MATCH(A2,$A$1:A565,0)):C2))最后做個判斷是否顯示,如果A列下一行與本行內容相同,那么就不顯示,否則將它顯示出來?! 〔诲e,這里用到了函數的嵌套,可能有些小伙伴會對函數嵌套會覺得它出身高貴,難以親近,妹子你等著,哥給你介紹另外一種不嵌套的。
二、 如果你在用2016,不防試下數據模型數據透視表中CONCATENATEX函數,具體操作方法如下: 1.光標放在A1:B37區域中的任一單元格,按CTRL+T快速插入【表】,表名為【表1】 2.在【Power Pivot】選項卡下將此表【添加到數據模型】
3.在【Power Pivot】選項卡-【度量值】-新建度量
4.在彈出的對話框中輸入公式,如下圖所示:
該公式的用途為文本合并,第一參數與第二參數為必需,第三參數可選, =CONCATENATEX(‘表1’,’表1′[人名],",")這個函數的白話意思就是要聯接哪張表里的哪個字段下的內容,用哪個分隔符連接。CONCATENATEX第三參數為分隔符。我這里用的是用逗號分隔,如果你要用頓號分隔,改成這樣即可:CONCATENATEX(‘表1’,’表1′[人名],"、")。
5.光標放在A1:B37區域中的任一單元格在插入數據透視表,并勾選【將此數據添加到數據模型】
6.將編碼拉到行字段,度量值1拉到值字段,如下圖所示:
7.選中透視表,右鍵刪除總計,字段名改成你要的即可?! ∮梅椒ǘ暮锰幵谟谒梢詣討B擴展且可以不用預先排序。OK,咱們今天就分享到這,祝各位小伙伴天天好心情………….






