VBA Distinct UDF
Это пользовательская формула для нахождения отдельных слов в строке слов.
- Единственными разделителями слов являются запятые и / или пробелы.
Поместить в стандартный модуль VBA
- Не модуль класса и немодуль листа.
- Либо добавьте в существующий модуль, либо создайте новый модуль.
Используйте функцию так же, как и другие функции формулы ячейки.
=Distinct("a,a,b,c, d e f f f")
- A1 =
Apples, App Pear Apples Pear Bees,
B1 =Distinct(A1)
- выход
Apples, App, Pear, Bees
VBA-код
Public Function Distinct(ByVal s As String) As String
Dim found As Boolean
Dim f As Variant
Dim w As Variant
Dim a() As String
a = Split("") 'empty array
For Each w In Split(WorksheetFunction.Trim(Replace(s, ",", " ")), " ")
found = False
For Each f In a
If f = w Then found = True
Next f
If Not found Then
ReDim Preserve a(UBound(a) + 1)
a(UBound(a)) = w
End If
Next w
Distinct = Join(a, ", ") ' Change to "," to remove space in output.
End Function
Определенное количество слов можно найти по следующей формуле:
=IF( Distinct(A1)="", 0, LEN( Distinct(A1)) - LEN( SUBSTITUTE( Distinct(A1), ",", "")) + 1)
Счетзапятые (и игнорирует пробелы), поэтому он все еще работает, даже если код VBA изменен для вывода a,b,c
.