Anzeige
Archiv - Navigation
1428to1432
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

Funktion Sum mit CountIf

Funktion Sum mit CountIf
31.05.2015 15:05:51
Chris
Hallo zusammen,
ich möchte innerhalb eines Codes bestimmte Werte in einer Spalte zählen lassen und das Ergebnis dann in einer Variable speichern.
Leider weiss ich nicht, wie ich das syntaktisch richtig schreibe. Hier meine ersten Versuche, _
damit ihr wisst was ich meine:

Dim adr As Range
Dim Anz As Integer
Set adr = Worksheets("AusgabeRotation2").Cells(4, MaxSpalteAusgabe)
Anz = Application.WorksheetFunction.Sum(CountIf(adr, "Station AO", "Station B&B"))
MsgBox Anz
End Sub

Der Code soll also in dem angegebenen Bereich nach den Werten Station AO und Station B&B suchen und die Anzahl der gefundenen Stellen dann in der Variable Anz speichern.
Danke für eure Hilfe und beste Grüße
Chris

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

Betreff
Datum
Anwender
Anzeige
AW: Funktion Sum mit CountIf
31.05.2015 16:03:49
Sepp
Hallo Chris,
ANZ = Application.WorksheetFunction.CountIf(adr, "Station AO") + Application.WorksheetFunction.CountIf(adr, "Station B&B")
Gruß Sepp

oder kompakter
31.05.2015 16:06:09
Sepp
With Application
  ANZ = .CountIf(adr, "Station AO") + .CountIf(adr, "Station B&B")
End With

Gruß Sepp

Anzeige
AW: oder kompakter
31.05.2015 17:33:17
Chris
Hallo ihr beiden,
danke für eure Hilfe.
Habe jetzt noch ein paar andere Suchkriterien hinzugefügt und nun bekomme ich einen Syntaxfehler. Habe zuvor den Hinweis von Excel bekommen, das ein Bindestrich ( _ ) oder ein geschlossene Klammer erwartet wird. Deshalb habe ich hier noch eine zweite variable Anz2 hinzugefügt da ich dachte es sind zuviel Zeichen.
Nun ist aber dieser blöde Syntaxfehler da :(
Hier der Code dazu:
Set adr = Worksheets("AusgabeRotation").Range(Cells(4, 2), Cells(MaxZeileAusgabe1a, 2))
With Application
Anz1 = .CountIf(adr, "Station AO") + .CountIf(adr, "Station B&B") + .CountIf(adr, "Station Q- _
Tor") + .CountIf(adr, "Station Libero") + .CountIf(adr, "Station Unterstützer Rolle") + .CountIf(adr, "Station Unterstützer HL6)
Anz2 = .CountIf(adr, "Station Unterstützer HL7)

Anzeige
AW: oder kompakter
31.05.2015 17:45:44
Daniel
Hi
pack nicht alles in eine Zeile, das wird zu unübersichtlich.
wenn du jedes .CountIf in eine eigne Zeile schreibst, wirds zwar etwas länger, aber deutlich übersichtlicher.
ausserdem, dass Worksheet muss vor jedem Zellbezug (Range, Cells, Columns, Rows) stehen, das gilt auch für die Cells innerhalb der Range!!!!
(hier hilft zum verkürzen die WITH-Klammer):
With Worksheets("AusgabeRotation")
Set adr = .Range(.Cells(4, 2), .Cells(MaxZeileAusgabe1a, 2))
End With
With Application.Worksheetfunction
Anz1 = 0
Anz1 = Anz1 + .CountIf(adr, "Station AO")
Anz1 = Anz1 + .CountIf(adr, "Station B&B")
Anz1 = Anz1 + .CountIf(adr, "Station Q-Tor")
Anz1 = Anz1 + .CountIf(adr, "Station Libero")
Anz1 = Anz1 + .CountIf(adr, "Station Unterstützer Rolle")
Anz1 = Anz1 + .CountIf(adr, "Station Unterstützer HL6)
Anz2 = .CountIf(adr, "Station Unterstützer HL7)
End With
ist zwar etwas länger, aber um welten Übersichtlicher und weniger Fehleranfällig.
Gruß Daniel

Anzeige
AW: oder kompakter
31.05.2015 18:00:36
Daniel
Ausserdem sieht man dann schneller die Optimierungsmöglichkeiten:
die Summierung kannst du auch in einer Schleife erstellen:
With Application.Worksheetfunction
For each X in Array("AO", "B&B", "Q-Tor", "Liebero", "Unterstützer Rolle", "Station Unterstü _
tzer HL6")
Anz1 = Anz1 + .CountIf(adr, "Station " & X)
Next
End with
Gruß Daniel
ps: Achtung, der Editor dieses Forums fügt bei zu langen Codezeilen (aus sicht des Editors) eigenmächtig die Zeilenumbrüche "_" ein und dies oft an unpassender Stelle, z.B. mitten im Textstring.
Diese Zeilenumbrüche müssen entfernt werden, wenn man den Code aus dem Forum kopiert.
pps: der Schreibfehler in meinem letzten Beitrag sollte sofort auffallen ;-) und damit die Vorteile der mehrzeiligen Schreibweise unterstreichen ;-)

Anzeige
AW: oder kompakter
31.05.2015 18:52:33
Chris
Mensch war das auch bescheuert mit den "" (Danke Sepp) und das Abkürzen ist eine sehr gute Hilfe und zeigt den Fehler auch gleich viel schneller. Danke Daniel
Da braucht es noch einiges an Routine...
Beste Grüße

AW: oder kompakter
31.05.2015 17:46:40
Sepp
Hallo Chris,
die "" müssen schon passen, sonst kann es nicht funktionieren!
With Application
  anz1 = .CountIf(adr, "Station AO") + .CountIf(adr, "Station B&B") + _
    .CountIf(adr, "Station Q-Tor") + .CountIf(adr, "Station Libero") + _
    .CountIf(adr, "Station Unterstützer Rolle") + .CountIf(adr, "Station Unterstützer HL6") + _
    .CountIf(adr, "Station Unterstützer HL7")
End With

Und poste bitte immer einen vollständigen Codeabschnitt, es ist lästig, wenn man immer alles nachbauen muss.
Gruß Sepp

Anzeige
AW: Funktion Sum mit CountIf
31.05.2015 16:26:56
Daniel
noch ein vermuteter Fehler:
Set adr = Worksheets("AusgabeRotation2").Cells(4, MaxSpalteAusgabe)
weist der Variablen adr nur eine einzige Zelle in der zeile 4 zu.
wenn du in der ganzen Spalte zählen willst, dann
Set adr = Worksheets("AusgabeRotation2").Colums(MaxSpalteAusgabe)
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige