Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1964to1968
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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?
Anzeige
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
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!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige