Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anz unterschiedliche Werte in Bereich

Anz unterschiedliche Werte in Bereich
RALF
Tach zusammen,
ich stell mich gerade etwas doof an......
Wie kann ich mit einem einfachen (KURZEN) VBA Code feststellen, wieviel unterschiedliche Werte in einem Bereich (z.Bsp A1:A50) sind?
Bsp. wie folgt (das Ergebnis wäre hier 3)
Bla
Bla
Bumm
Bla
Bla
Bonk
Bumm
Bumm
Danke und Gruß
RALF

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Anz unterschiedliche Werte in Bereich
03.11.2011 18:21:53
Reinhard
Hallo Ralf,
einige Möglichkeiten, hier sowas wie Pseudocode:.
Dim colC as new collection
On Error resume next 'wichtig
For Zei = 1 to 50
colc.add...
next zei
Msgbox colc.count
Oder auf www.excelformeln.de die Excelformel dafür suchen und n Vba benutzen.
Gruß
Reinhard
AW: Anz unterschiedliche Werte in Bereich
03.11.2011 18:25:29
Ass
Hallo RALF, hier als Funktion:
Public Function Anz_Unique(rngBereich As Range)
'berechnet die Anzahl unterschiedlicher Einträge im übergebenen Bereich
Dim colItem As New Collection
Dim rngZelle As Range
On Error Resume Next
For Each rngZelle In rngBereich
colItem.Add rngZelle.Value, CStr(rngZelle.Value)
Next rngZelle
Anz_Unique = colItem.Count
End Function
Gruß
Rudi
Anzeige
2 Fragen zur Funktion
03.11.2011 19:30:35
Sibylle
Hallo Rudi,
zu Deiner Funktion habe ich 2 Fragen, um deren Beantwortung ich bitte:
a. Dim colItem As New Collection
Was genau hat man sich unter diesem Befehl vorzustellen?
b. colItem.Add rngZelle.Value, CStr(rngZelle.Value)
hier werden ja wohl die Zellinhalte auf Unikat geprüft, hinzugefügt und gezählt?
Weshalb die Konvertierung in CStr? Ist dies so vom System vorgesehen?
Einen schönen Abend.
Gruß
Sibylle
AW: 2 Fragen zur Funktion
03.11.2011 20:27:35
Reinhard
Hallo Sybille,
::::a. Dim colItem As New Collection
::::Was genau hat man sich unter diesem Befehl vorzustellen?
daß die variable colItem ein eindimensionales Array ist, Der erste Index ist nicht 0 sondern 1.
::::b. colItem.Add rngZelle.Value, CStr(rngZelle.Value)
::::hier werden ja wohl die Zellinhalte auf Unikat geprüft, hinzugefügt und gezählt?
Jain. Die zellinhalte werden in die arrayliste von colItem angefügt sofern sie nicht schon darin vorhanden sind.
Deshalb On Error Resume Next, denn schon vorhanden bringt einen Fehler.
Die Zählung erfolgt dann nach der Einleseschleife durch colItem.count.
::::Weshalb die Konvertierung in CStr? Ist dies so vom System vorgesehen?
Collections mögen nur Stringwerte.
Gruß
Reinhard
Anzeige
Danke
03.11.2011 21:53:41
Sibylle
Hallo Reinhard,
vielen Dank für die präzise Beschreibung der Wirkung der einzelnen Zeilen.
Die Arbeitsweise der Funktion ist damit verstanden. Danke.
Einen schönen Abend.
Gruß
Sibylle
DANKE - mit super Erläuterung unten
04.11.2011 10:21:23
RALF
super Lösung....DANKE
kurze Alternative
03.11.2011 19:59:09
Erich
Hi Ralf,
teste doch mal das hier:

Sub AnzOhneDup()
MsgBox Evaluate("SUM(IF(A1:A50"""",1/COUNTIF(A1:A50,A1:A50)))")
End Sub
Die Matrixformel: =SUMME(WENN(A1:A50"";1/ZÄHLENWENN(A1:A50;A1:A50)))
ist von http://www.excelformeln.de/formeln.html?welcher=42
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
kurz - schnell
04.11.2011 10:33:49
RALF
Servus Erich,
klasse Lösung, da nur eine Zeile. Wenn ich jetzt noch die Muse hätte, Matrixformeln zu verstehen ;O)
Da ich noch eine weitere Bedinung einfügen möchte, bietet sich für mein aktuelles Problem die Lösung von Reinhard an.
Wenn man beide Lösungen gegeneinander antreten lässt, ist die von Reinhard aber die deutlich schnellere (0,02 Millisekunden gegen 1 Millisekunde pro Zeile)
DANKE und Gruß
RALF

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige