返回列表 上一主題 發帖

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

回復 10# 准提部林
感謝准大提供的方式!!

TOP

google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

G3 陣列公式下拉
  1. =TEXTJOIN(":",TRUE,IF(($B$2:$B$30=F3)*($C$2:$C$30<>"")*MATCH($B$2:$B$30&$C$2:$C$30&"<>",$B$2:$B$30&$C$2:$C$30&"<>",)=ROW($1:$29),$C$2:$C$30,""))
複製代碼
365  , F3 公式
  1. =UNIQUE(B2:B30)
複製代碼
365 ,  G3 公式下拉
  1. =TEXTJOIN(":",TRUE,UNIQUE(FILTER($C$2:$C$30,($C$2:$C$30<>"")*($B$2:$B$30=F3))),"")
複製代碼
300 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 Andy2483 於 2023-12-1 15:56 編輯

謝謝論壇,謝謝各位前輩
後學藉此帖練習VBA,學習方案如下,請各位前輩指教
執行前:
20231201_1.jpg
2023-12-1 09:45


執行結果:
20231201_2.jpg
2023-12-1 09:45


Option Explicit
Sub TEST()
Dim Brr, Crr, i&, R&, N&, T$, T1$
'↑宣告變數
Brr = Range([C1], [B65536].End(xlUp))
'↑令Brr變數是裝入儲存格值的二維陣列
ReDim Crr(1 To 1000, 1 To 2)
'↑宣告Crr變數是二維空陣列,宣告其所引號範圍
For i = 2 To UBound(Brr)
'↑設順迴圈!i從2 到 Brr陣列縱向最大列號
   R = Val(Brr(i, 1)): T1 = Trim(Brr(i, 2))
   '↑令R變數是 迴圈列1欄陣列值轉成的數值(週數)
   '令T1變數是 迴圈列2欄陣列值去除前後空白字元後的新字串(內容)

   If R = 0 Or T1 = "" Then GoTo i01 Else Crr(R, 1) = R
   '↑如果序號或內容是空的 !就跳過,否則令結果陣列Crr第1欄週數列寫入週數
   If InStr(T & "/", "/" & T1 & "/") Then GoTo i01 Else N = IIf(N < R, R, N)
   '↑如果串接內容的字串裡有這 T1變數內容!就跳過,
   '否則令N變數記錄結果陣列需要用多少列

   Crr(R, 2) = IIf(Crr(R, 2) = "", T1, Crr(R, 2) & ":" & T1)
   '↑令結果陣列Crr第2欄內容列寫入沒有重複的內容
   T = T & "/" & T1
   '↑令T變數累串接T1變數(內容)
i01: Next
[H:I].ClearContents
'↑令舊的結果儲存格資料清除內容
If N = 0 Then Exit Sub
'↑如果N變數是0(沒有符合的資料)!就結束程式執行
[H3].Resize(N, 2) = Crr
'↑令所需要的結果儲存格區域寫入Crr陣列值
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 話多不如話少,話少不如話好。
返回列表 上一主題