Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Zählenwenns mit Array

Forumthread: VBA Zählenwenns mit Array

VBA Zählenwenns mit Array
12.02.2024 22:54:38
PeTeR
Hallo VBA-Profis,
kann man die worksheetfunction.countifs mit einem mehrspaltigen Array nutzen? Z.B. countifs(array.spalte2,"Ja",array.spalte4,"Fußball")
Vielen Dank für eure Unterstützung!
PeTeR
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zählenwenns mit Array
12.02.2024 23:24:42
Daniel
Hi
Prinzipiell kannst du mit WorksheetFunction.Index(DeinArray, 0, 2) die zweite Spalte eines Arrays herauslösen.

Funktioniert aber nicht mit CountIf, weil CountIf einen Zellbereich als Input benötigt.

Das müsstest du selbst per Schleife programmieren. Wobei die selbst programmierte Schleife sogar schneller sein kann, als die Excelfunktion, die ja intern ebenfalls diese Schleife durchlaufen muss.

Gruß Daniel
Anzeige
AW: VBA Zählenwenns mit Array
13.02.2024 10:44:50
PeTeR
Hallo Daniel,
vielen Dank für deine Antwort. Ich wollte prüfen, ob countifs evtl. noch schneller ist als meine Schleife.
VG PeTeR
AW: VBA Zählenwenns mit Array
13.02.2024 12:00:13
onur
Und warum machst du dann nicht ZWEI Arrays daraus statt nur eins?
AW: VBA Zählenwenns mit Array
13.02.2024 13:07:34
PeTeR
Hallo onur,
vielen Dank für die geniale Idee! Ich scheitere leider an der Umsetzung. Wie kommt das einspaltige Array in die Funktion?
Dim Sportbereich()
Dim Anz As Long
Sportbereich = Range("A2:A50000")
Anz = WorksheetFunction.CountIf(Sportbereich, "Fußball")
funktioniert leider nicht.
VG PeTeR
Anzeige
AW: VBA Zählenwenns mit Array
13.02.2024 13:10:40
onur
SET Sportbereich = Range("A2:A50000")
AW: VBA Zählenwenns mit Array
13.02.2024 13:17:15
daniel
Hi
ich schrieb doch: CountIF benötigt einen Zellbereich als Eingabewert und kann mit Arrays nicht arbeiten.
kuckst du auch hier:
https://learn.microsoft.com/de-de/office/vba/api/excel.worksheetfunction.countif
vergleiche die Beschreibung mit Funktionen, die Arrays verarbeiten können und erkenne den Unterschied (Abschnitt Parameter - Datentyp):
https://learn.microsoft.com/de-de/office/vba/api/excel.worksheetfunction.sum

wenn du mit CountIF arbeiten willst, musst du die Daten aus dem ExcelTabellenblatt direkt verwenden, also wenn, dann so:
Dim Sportbereich as Range

Dim Anz As Long
Set Sportbereich = Range("A2:A50000")
Anz = WorksheetFunction.CountIf(Sportbereich, "Fußball")


Gruß Daniel


Anzeige
AW: VBA Zählenwenns mit Array
13.02.2024 13:23:42
onur
Du kannst aber auch direkt den Bereich/die Bereiche in die Funktion schreiben, statt den Umweg über die Arrays, da die Worksheetfunction sowieso schon schneller ist, als eine reine VBA-Lösung.
AW: VBA Zählenwenns mit Array
13.02.2024 13:35:43
daniel
"da die Worksheetfunction sowieso schon schneller ist, als eine reine VBA-Lösung."
nicht zwingend.
Worksheetfunction.Transpose beispielsweise ist sogar langsamer und weniger Leistungsfähig in Bezug auf die verarbeitbare Datenmenge, als wenn man das Umschreiben selber als Schleife programmiert. Die Frage, was besser oder schneller ist, lässt sich so pauschal nicht beantworten, da hinter den Worksheetfunctions oft noch alte Codebestandteile stecken, die noch aus 2003er-Zeiten stammen und nicht auf größere Datenmengen abgestimmt sind. Außerdem müssen Worksheetfunctions immer auch Zellobjekte händeln, was auch Zeit kosten kann, so dass die Schleife über Arrays durchaus Vorteile haben kann.

Allerdings sind diese Zeitvorteile meist eher akademischer Natur, da vielleicht messbar, aber selten spürbar. Und eine Zeile Code ist auch immer angenehmer als ein Block aus mehreren Zeilen, wie er für die Schleife erforderlich ist. (vorallem beim Testen im Einzelstep)

Gruß Daniel
Anzeige
AW: VBA Zählenwenns mit Array
13.02.2024 14:49:09
PeTeR
Vielen Dank euch beiden für die Unterstützung und Ausführungen!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige