Function TEXTJOIN(Delimiter As String, IgnoreEmpty As Boolean, ParamArray Parm() As Variant)
Dim E, C As Range, V, t() As String, N&
For Each E In Parm
If TypeName(E) = "Range" Then
For Each C In E.Cells
V = C.Value: GoSub 1
Next C
ElseIf IsArray(E) Then
For Each V In E: GoSub 1: Next V
Else
V = E: GoSub 1
End If: Next E
TEXTJOIN = Join(t, Delimiter)
Exit Function
1: If V = "" And IgnoreEmpty Then Return
N = N + 1
ReDim Preserve t(1 To N): t(N) = V
Return
End Function