/ / Jak policzyć liczbę unikalnych komórek w Excelu, które nie zawierają niektórych znaków - excel, vba

Jak liczyć liczbę unikalnych komórek w Excelu, które nie zawierają pewnych znaków - excel, vba

Próbuję policzyć liczbę unikalnych komórek w kolumnie C, w której nie ma "#" lub "-".

Mam kolumnę komórek, które zawierają nazwy. Niektóre z tych nazw są powtarzane, a niektóre mają takie znaki jak "-" i / lub "#" wewnątrz - próbuję wykluczyć, że te komórki nie są liczone.

Mam 2 formuły, z których każda zajmuje połowę tego, czego potrzebuję, ale muszę połączyć 2 formuły, aby uzyskać właściwą odpowiedź:

Ta formuła zlicza liczbę unikalnych komórek (i dba o puste pola): = SUMA (JEŻELI (LICZ.IF (C4: C3689, C4: C3689) = 0, "", 1 / COUNTIF (C4: C3689, C4: C3689)) )

Ta formuła zlicza liczbę komórek, które nie mają "#" lub "-": = SUMPRODUCT (N (LEN (SUBSTITUTE (SUBSTITUTE (C4: C3689, "-", ""), "#", "" )) = LEN (C4: C3689)))

Czy wiesz, jak połączyć 2 formuły? Jeśli wiesz, jak połączyć te dwie formuły w inny sposób (funkcja niestandardowa lub VBA), to też byłoby wspaniale.

Dzięki.

Odpowiedzi:

2 dla odpowiedzi № 1

Ta formuła zlicza liczbę różnych wpisów w określonym zakresie, z wyłączeniem tych, które zawierają # lub -

=SUMPRODUCT((ISERR(SEARCH("#",C4:C3689))*ISERR(SEARCH("-",C4:C3689))*(C4:C3689<>""))/COUNTIF(C4:C3689,C4:C3689&""))


0 dla odpowiedzi nr 2

Użyj funkcji podobnej do tej:

=GetUniqueCount("C4:C3689")

Dodaj kod funkcji:

Function GetUniqueCount(rng As Range) As Variant
"Dim rng as Range
"Set rng = Range("C4:C3869") "Modify as needed

Dim r as Range
Dim uniqueCount as Long
Dim dict as Object
Set dict = CreateObject("Scripting.Dictionary")
For each r in rng.Cells
If Not dict.Exists(r.Value) Then
If Instr(1, r.Value, "#") = 0 Then
If Instr(1, r.Value, "-") = 0 Then
dict(r) = ""
uniqueCount = uniqueCount + 1
End If
End If
End If
Next

GetUniqueCount = uniqueCount
Set dict = Nothing
End Function