返回列表 上一主題 發帖

[發問] 請問各位大神,有關 textjoin 根據條件合併後,並刪除重複值

[發問] 請問各位大神,有關 textjoin 根據條件合併後,並刪除重複值

請問各位大神,
我想寫一個能根據我的條件,來合併相關文字,並把有重複的文字,排除。
如下圖所示
01.png
2020-6-22 23:40


我G3=TEXTJOIN(";",TRUE,REPT($C$2:$C$30,$B$2:$B$30=F3))   然後ctrl+shit+enter 根據 F3 去找到第1週的文字 然後就會合併成  :開工拜拜;基礎開挖;基礎開挖;一樓地坪施作

我希望能判斷把重複刪除之,變成:開工拜拜;基礎開挖;一樓地坪施作

我有爬文有能寫:=TEXTJOIN(";",TRUE,IF(B$2:$B$30=F3;MATCH($C$2:$C$30;$C$2:$C$30;0)=(ROW($C$2:$C$30)-ROW($C$1));$C$2:$C$30;"");"")) 再搭配 ctrl+shit+enter
我是按到他的邏輯寫的(原文在這https://stackoverflow.com/questions/55607951/removing-duplicate-values-in-textjoin-and-if-function) 但一直錯誤...就算把;改成,也沒用

後來參照https://techcommunity.microsoft.com/t5/excel/removing-duplicates-when-using-textjoin/m-p/188950
還是一樣寫不出來...........

不知道我哪裡卡住了 拜託各位大神了!感恩

供參考
TEST01.zip (9.37 KB)

本帖最後由 quickfixer 於 2020-6-23 05:15 編輯

我找到這篇教學,跟你一樣的格式,我照著做ok喔
https://dhexcel1.wordpress.com/2017/04/04/multiple-lookup-values-in-a-single-cell-withwithout-duplicates-using-only-excel-formulas-by-david-hager/
Image 28.png
2020-6-23 04:54

Image 29.png
2020-6-23 04:56


arange=紀錄!$B$2:$B$30
brange=紀錄!$C$2:$C$30
some_array=SMALL(IF(arange=紀錄!$F3,ROW(brange)-1,""), ROW(INDIRECT("1:"&COUNT(IF(arange=紀錄!$F3,ROW(brange),"")))))
carray=INDEX(brange,N(IF(1,some_array)))
countarray=COUNTA(carray)
rowarray=ROW(INDIRECT("1:"&countArray))

g3=TEXTJOIN(";",,IF(MATCH(carray,carray,0)=rowarray,carray,""))
(ctrl+shift+enter)

TOP

回復 2# quickfixer
謝謝大大妳的分享,但我忘了述說一件事,如果我把部分內容都為空白,他會顯示#N/A..怎麼辦呢
AASDSA.png
2020-6-23 08:47

TOP

本帖最後由 quickfixer 於 2020-6-23 10:10 編輯

回復 3# edmondsforum

#N/A 就用ifna處理就好了
=TEXTJOIN(";",,IFNA(IF(MATCH(carray,carray,0)=rowarray,carray,""),""))
(ctrl+shift+enter)

Image 30.png
2020-6-23 10:09

TOP

回復 4# quickfixer

再度謝謝大大提供方法,但因考量符號因素和未來 some_array=SMALL(IF(arange=紀錄!$F3,ROW(brange)-1,""), ROW(INDIRECT("1:"&COUNT(IF(arange=紀錄!$F3,ROW(brange),"")))))
這個  紀錄!$F3   會根據工作表: 例如  第1週!F3    /   第2週!F3  ....依此類推
可能要創造100個名稱....
所以剛剛有找到另一個方式,只可惜沒辦法 讓其他週同時出現一樣的文字罷了...
G3 =TEXTJOIN(":",TRUE,IF(($B$2:$B$30=F3)*($C$2:$C$30<>""),IF(MATCH($C$2:$C$30,$C$2:$C$30,0)=(ROW($C$2:$C$30)-MIN(ROW($C$2:$C$30))+1),$C$2:$C$30,""),""))
AADSDD.png
2020-6-23 10:51


目前是希望能讓第3週 能跑出 相同的文字  

解決了空白和重複,卻造成其他週重複跑不出來 哈哈
再拜託各位大大協助了

TEST03.zip (13.26 KB)

TOP

回復 5# edmondsforum
補充說明:G3=TEXTJOIN(":",TRUE,IF(($B$2:$B$30=F3)*($C$2:$C$30<>""),IF(MATCH($C$2:$C$30,$C$2:$C$30,0)=(ROW($C$2:$C$30)-ROW($C$1)),$C$2:$C$30,""),"")) 也會有同樣效果,
但就是會把相同文字排除..就算其他週也一樣~"~

TOP

回復 5# edmondsforum

Image 31.png
2020-6-23 11:17

   
用建立複本,excel定義名稱會自動做新的

TOP

回復 7# quickfixer
原來如此啊!!還以為要自己建立好耶 不然我有100多個 會嚇死人 哈哈
另外你所體及的ifna 有什麼方式讓多餘符號刪除呢
;基礎開挖;;一樓地坪施作    變成     基礎開挖;一樓地坪施作   這樣

TOP

真的感謝 quickfixer 大大提供的資訊,終於特別創造出來啦!!!
G3 = =TEXTJOIN(", ", TRUE, IFNA(IF(MATCH($C$2:$C$30, IF((F3=$B$2:$B$30)*($C$2:$C$30<>""), $C$2:$C$30, ""), 0)=MATCH(ROW($C$2:$C$30), ROW($C$2:$C$30)), $C$2:$C$30, ""),""))
這樣一來可以讓同條件下,相同的合併起來,而且空白的也會排除!!!


參考:https://www.get-digital-help.com/excel-udf-lookup-and-return-multiple-values-concatenated-into-one-cell/#searchdel

TOP

office版本沒有TEXTJOIN, 手寫試下:
陣列公式
=TEXTJOIN(":",TRUE,IF(ISNUMBER(0/(C$2:C$99<>"")/(MATCH(F3&C$2:C$99,B$2:B$99&C$2:C$99,)=ROW($2:$99)-1)),C$2:C$99,""))

TOP

        靜思自在 : 做該做的事是智慧,做不該做的事是愚癡。
返回列表 上一主題