Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
940to944
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
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zählen auf zwei Werte

Zählen auf zwei Werte
16.01.2008 12:17:00
Micha555
Hallo,
vermutlich trivial, aber ich krieg es nicht hin und habe hier auch nichts gefunden. Daher bitte ich um eure Hilfe.
Ich will in VBA zählen, wie oft in einer Tabelle Zeilen, in denen zwei bestimmte Werte in unterschiedlichen Spalten enthalten sind, vorkommen.
Also die Tabelle X hat zwei Spalten A und B in der Werte stehen. Ich will wissen, wie oft die Kombination vorkommt, dass in Spalte A eine 100 und in Spalte B ein "E" steht.
Spalten
A....................... .B
1.........................E
100.....................B
2.........................B
100.....................E
Hier wäre das Ergebnis also 1.
Irgendwie mit .countif....aber wie verschachtele ich das?
Kann mir da jemand vom Schlauch helfen?
Gruss und Danke für die Hilfe!
Michael

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zählen auf zwei Werte
16.01.2008 12:21:42
Christian
Hast es schon einmal mit einer Pivot-Tabelle versucht. Da bräuchtes du keine VBA Programmierung.
Gruß
Christian

AW: Zählen auf zwei Werte
16.01.2008 12:23:55
Micha555
Hallo Christian,
würde gehen, ich brauche das aber in dem VBA Code, weil ich je nach Ergebniss verschiedene Verarbeitungsschritte durchführen muss.
Danke und Gruss
Michael

AW: Zählen auf zwei Werte
16.01.2008 12:31:00
selli
hallo michael,
so sollte es gehen:

Sub zählen()
Dim i
Dim a
i = 0
For a = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(a, 1) = 100 Then
If Cells(a, 2) = "E" Then
i = i + 1
End If
End If
Next a
MsgBox i
End Sub


gruß selli

Anzeige
AW: Zählen auf zwei Werte
16.01.2008 14:15:09
Micha555
Danke selli, hilft schon mal weiter !! Zumindest habe ich jetzt den Schlauch verlassen, hätte man ja auch selber drauf kommen können....peinlich!
Weis jemand eine schnellere Methode? Die Tabelle A hat 12 Tsd Zeilen, B hat ca. 3000, da rödelt die Kiste ganz schön lange.
Gruss
Michael

AW: Zählen auf zwei Werte
16.01.2008 15:20:24
Wolli
Hallo Micha, die Tabellenfunktion für die Zeilen 1 bis 18 wäre
=SUMMENPRODUKT(($A$1:$A$18=100)*($B$1:$B$18="E"))
In VBA heißt das dann
ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R1C1:R18C1=100)*(R1C2:R18C2=""E""))"
Eigentlich müsste man das dann so ähnlich in ein Programm einbauen können:
Debug.Print Application.WorksheetFunction.SumProduct((Range("A1:A18") = 100) * (Range("B1:B18") = "E"))
aber das gibt eine Typ-Fehler. Im Arbeitsblatt gelten Wahrheitswerte halt als 0/1, sobald man mit ihnen rechnet, aber in VBA geht das wohl nicht.
Mein Tipp daher: Schreib Dir die Formel per VBA ins Tabellenblatt und lies das Ergebnis dort wieder aus.
Gruß, Wolli

Anzeige
AW: Zählen auf zwei Werte
16.01.2008 17:01:00
Micha555
Hallo Wolli,
Mist, das geht in der Tabelle direkt astrein, aber trotz aller Versuche bekomme ich im VBA-Code diverse Fehler.
Das 100 und das E habe ich hier nur als Beispiel genommen, die Eigentlichen Werte stehen in Variablen. Naja, ich tüftel noch ein bischen, vielleicht bekomme ich es ja noch hin.
Auf jeden Fall: Herzlichen Dank!
Gruss
Michael

AW: Zählen auf zwei Werte
17.01.2008 07:26:00
Wolli
Hallo Michael, mach' es doch einfach im Tabellenblatt
1. Schreiben:
Range("X10000").FormulaR1C1 = "=SUMPRODUCT((R1C1:R10000C1=" & Variable1 & ")*(R1C2:R10000C2=""" & Variable2 & """))"
2. Auslesen:
Variable2 = Range("X10000")
3. wieder löschen
Range("X10000").clearcontents
Gruß, Wolli

Anzeige
AW: Zählen auf zwei Werte
17.01.2008 07:58:00
Micha555
Hallo Wolli,
danke, hab ich ausprobiert und funzt.
Leider dauert die Methode ziemlich lange (die Spalten enthalten 13 Tsd und 300 Werte). Jetzt muss ich sehen, dass ich den Zugriff optimiere.
Danke
Michael

AW: Zählen auf zwei Werte
17.01.2008 09:29:00
Wolli
Hallo Michael, schön zu hören :-)
Summenprodukt ist eine fest verdrahtete Tabellenfunktion und die sind normalerweise schneller als alles, was man so programmieren kann - ich fürchte, Du musst dann halt etwas warten :-(
Gruß, Wolli

AW: Zählen auf zwei Werte
17.01.2008 09:48:00
Micha555
Naja, warten ist übertrieben. Das was ich jetzt habe dauert ca. 30 sec, von daher ist es schon ok....
Danke auf jeden Fall
Michael

Anzeige
AW: Zählen auf zwei Werte
16.01.2008 12:33:06
selli
hallo michael,
so sollte es gehen

Sub zählen()
Dim i
Dim a
i = 0
For a = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(a, 1) = 100 Then
If Cells(a, 2) = "E" Then
i = i + 1
End If
End If
Next a
MsgBox i
End Sub


gruß selli

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige