Ich bin neu bei VBA. Ich möchte eindeutige Namen, getrennt durch Komma und Leerzeichen, in dem Bereich zählen, den ich von derselben Website als UDF erhalten habe, aber es wird nur eine Zelle betrachtet.
Function ListCount(list As String, delimiter As String) As Long
Dim arr As Variant
arr = Split(list, delimiter)
ListCount = UBound(arr) - LBound(arr) + 1
End Function
Function RemoveDuplicates(list As String, delimiter As String) As String
Dim arrSplit As Variant, i As Long, tmpDict As New Dictionary, tmpOutput As String
arrSplit = Split(list, delimiter)
For i = LBound(arrSplit) To UBound(arrSplit)
If Not tmpDict.Exists(arrSplit(i)) Then
tmpDict.Add arrSplit(i), arrSplit(i)
tmpOutput = tmpOutput & arrSplit(i) & delimiter
End If
Next i
If tmpOutput <> "" Then tmpOutput = Left(tmpOutput, Len(tmpOutput) - Len(delimiter))
RemoveDuplicates = tmpOutput
'housekeeping
Set tmpDict = New Dictionary
End Function
kann jemand den Zellbereich ändern? Danke, Rao
Antwort1
Diese Formel ersetzt auch das gesamte VBA:
=SUMPRODUCT(--(ISERROR(FIND(TRIM(MID(SUBSTITUTE(TEXTJOIN(",",TRUE,A:A),",",REPT(" ",999)),(ROW(1:100)-1)*999+1,999)),MID(SUBSTITUTE(TEXTJOIN(",",TRUE,A:A),",",REPT(" ",999)),1,(ROW(1:100)-1)*999)))))
TEXTJOIN wurde in Office 365 Excel eingeführt. Wenn Sie es nicht haben, verwenden Sie diesen Code, der die Funktion nachahmt:
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