這裏有一個稍微不同的方法。
Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
Dim d As Long
Dim c As Long
Dim arr2()
Dim t As Long, y As Long
t = -1
y = -1
If TypeName(arr) = "Range" Then
arr2 = arr.Value
Else
arr2 = arr
End If
On Error Resume Next
t = UBound(arr2, 2)
y = UBound(arr2, 1)
On Error GoTo 0
If t >= 0 And y >= 0 Then
For c = LBound(arr2, 1) To UBound(arr2, 1)
For d = LBound(arr2, 1) To UBound(arr2, 2)
If arr2(c, d) <> "" Or Not skipblank Then
TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
End If
Next d
Next c
Else
For c = LBound(arr2) To UBound(arr2)
If arr2(c) <> "" Or Not skipblank Then
TEXTJOIN = TEXTJOIN & arr2(c) & delim
End If
Next c
End If
TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
End Function
它可以讓你確定分隔符,如你可以有,
或只是一個空間,或你想要的返回值之間放任何東西。
第二個標準將詢問您是否想返回一個空的空間,任何都是空的。
第三個你乾脆把IF(數組形式),其使用要篩選的返回值的標準。
所以你比如你會在陣列形式使用:
=TEXTJOIN(" ",TRUE,IF((A2:A7="A")*(B2:B7=2),C2:C7,""))
的" "
說,我們想要的值之間的空間。
的TRUE
意味着我們跳過任何空白,因爲我們發送空白當值不被過濾器有道理,這是非常重要的。
的IF((A2:A7="A")*(B2:B7=2),C2:C7,"")
循環通過柱,並返回值當兩個布爾測試都爲TRUE,如果不它返回一個空。
存在與陣列式必須與離開編輯模式時按Ctrl移輸入,而不是輸入來確認。如果正確完成,Excel將在公式周圍放置{}
。
如果你想返回完整的列中,您可以簡單地使用:
=TEXTJOIN(" ",TRUE,C2:C7)
在常規的形式,它會在一個單元格返回8 3 3 9 2 3
。
注
如果您有Office Excel的365是TEXTJOIN
天然地存在在這兩種情況下進入像上面的公式。
您只需使用上述公式,而不使用vba代碼。
你可以舉一些例子//你的數據是什麼樣的? – CallumDA