1.7k Aufrufe
Gefragt in Tabellenkalkulation von ekg Mitglied (303 Punkte)
Hallo

ich habe eine Tabelle in der 20 Tabellenblätter sind. Jede Woche füge ich
vorne eins hinzu und lösche hinten eins.
Ich möchte ein VBA Code nutzen um immer aus den ersten 4 Blättern Zellen
zu zählen die einen betsimmten Inhalt haben nämlich AR, GO und HI. Die
zu zählenden Inhalte stehen immer in Spalte k.

Toll wäre wenn in einer MSG Box die Anzahl erscheinen würde.

Gruß Erwin

9 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Erwin,

sollen die Inhalte nur aus bestimmten Spalten gezählt werden oder im ganzen Blatt.

Gruß

M.O.
0 Punkte
Beantwortet von ekg Mitglied (303 Punkte)
Hallo M.O.

nur aus bestimmten Spalten

Gruß Erwin
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo,

@ M.O.

in Eröffnungsthread steht folgender Satz

Die zu zählenden Inhalte stehen immer in Spalte k.


@ Erwin

- Sollen die 3 Kriterien einzeln gezählt und in der MsgBox angezeigt werden oder die Summe aller 3?

- Bei welchem Ereignis soll die Zählung gestartet werden?

Gruß
Rainer
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

uups, das mit der Spalte hatte ich doch tatsächlich überlesen :-(.

Kopiere das folgende Makro in ein Standard-Modul deiner Arbeitsmappe:

Sub zaehlen()

Dim lngTabelle As Long
Dim rngZelle As Range
Dim ar As Long
Dim go As Long
Dim hi As Long
Dim lngLetzte As Long

'die ersten vier Tabellenblätter durchlaufen
For lngTabelle = 1 To 4

With ThisWorkbook.Worksheets(lngTabelle)
'letzte Zeile in Spalte K des jeweiligen Tabellenblatts ermitteln
lngLetzte = .Cells(Rows.Count, 11).End(xlUp).Row
'Nun Spalte K durchlaufen
For Each rngZelle In .Range(.Cells(1, 11), .Cells(lngLetzte, 11))
If rngZelle.Value = "AR" Then ar = ar + 1
If rngZelle.Value = "GO" Then go = go + 1
If rngZelle.Value = "HI" Then hi = hi + 1
Next rngZelle
End With

Next lngTabelle

'Ausgabe
MsgBox "Das Ergebnis der Zählung lautet:" & Chr(10) & "AR: " & ar & Chr(10) & "GO: " & go & Chr(10) & "HI: " & hi, 48, "Zählung beendet"

End Sub


Bei Bedarf kann natürlich auch noch die Gesamtanzahl ausgegeben werdern :-).
Gruß
M.O.
0 Punkte
Beantwortet von ekg Mitglied (303 Punkte)
Danke M.O.

genau was ich gesucht habe. Perfekt gelöst.
Gesamtsumme wäre nett.
Gut wäre wenn man das Ergebnis noch in die Excel Tabelle einfügen könnte.
Gruß Erwin
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Erwin,

wo im Tabellenblatt soll das Ergebnis eingefügt werden?

Gruß

M.O.
0 Punkte
Beantwortet von ekg Mitglied (303 Punkte)
Hallo M.O.

in der Zelle a25

Gruß Erwin
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Erwin,

hier das ergänzte Makro:

Sub zaehlen()

Dim lngTabelle As Long
Dim rngZelle As Range
Dim ar As Long
Dim go As Long
Dim hi As Long
Dim lngLetzte As Long
Dim strErgebnis As String

'die ersten vier Tabellenblätter durchlaufen
For lngTabelle = 1 To 4

With ThisWorkbook.Worksheets(lngTabelle)
'letzte Zeile in Spalte K des jeweiligen Tabellenblatts ermitteln
lngLetzte = .Cells(Rows.Count, 11).End(xlUp).Row
'Nun Spalte K durchlaufen
For Each rngZelle In .Range(.Cells(1, 11), .Cells(lngLetzte, 11))
If rngZelle.Value = "AR" Then ar = ar + 1
If rngZelle.Value = "GO" Then go = go + 1
If rngZelle.Value = "HI" Then hi = hi + 1
Next rngZelle
End With

Next lngTabelle

strErgebnis = "Das Ergebnis der Zählung lautet:" & Chr(10) & "AR: " & ar & Chr(10) & "GO: " & go & Chr(10) & "HI: " & hi & Chr(10) & "Insgesamt: " & ar + go + hi

'Ausgabe auf dem ersten Tabellenblatt in Zelle E25 - ggf. anpassen
ThisWorkbook.Worksheets(1).Range("E25") = strErgebnis
'Ausgabe in Messagebox
MsgBox strErgebnis, 48, "Zählung beendet"

End Sub


Das Ausgabe-Tabellenblatt musst du ggf. anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von ekg Mitglied (303 Punkte)
Hallo M.O.

perfekt. Nochmals vielen Dank

Gruss Erwin
...