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

Forumthread: Zählenwenn / Countif in VBA

Zählenwenn / Countif in VBA
31.07.2017 16:07:13
FauBeA
Hallo liebes Forum,
folgende Anforderung: alle Werte die in den Spalten CB:CG eingetragen sind, sollen durch die Anzahl der gleichen Zeilen dividiert werden. Dies wird ermittelt anhand des Zellenwertes U
Ein Beispiel:
CB3= 15
U3= "Beispiel1"
und "Beispiel1" kommt noch zusätzlich in den Zellen U10 und U15 vor.
Ergebnis:
CB3= 5
Müsste ungefähr so heißen die Formel:
Sheets("Tabelle1").Range("CB3") = Range("CB3") / WorksheetFunction.CountIf(Range("U:U"),Range("U:U"))
Das funktioniert so leider nicht. Und wie gesagt, mein Beispiel mach die Berechnung ja nur für CB3, ich brauche es für alle vorhandenen Zeilen von CB:CG.
Könnt ihr mir weiterhelfen? :)
Dankeee
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zählenwenn / Countif in VBA
31.07.2017 16:21:38
Daniel
HI
dürfte am einfachsten so gehen.
1. Ermittle die Anzahl für die jeweiligen Werte in U in einer Hilfsspalte mit der Formel (Formel für Zeile 3):
=ZählenWenn(U:U;U3)
die formel muss von der ersten bis zur letzen Datenzeile eingetragen werden.
2. kopiere diese Hilfsspalte
3. markiere die Spalten CB:CG und füge die kopierten Zellen mit den Optionen : "Werte" und "Vorgang: Dividieren" dort ein
4. lösche die Hilfsspalte wieder
sieht als Makro dann so aus:
Sub test()
With ActiveSheet.UsedRange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=CountIf(C21,RC21)"
.Formula = .Value
.EntireColumn.Copy
Range("CB:CG").PasteSpecial xlPasteValues, xlPasteSpecialOperationDivide
.ClearContents
End With
End With
End Sub
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Zählenwenn und Countif in VBA richtig anwenden


Schritt-für-Schritt-Anleitung

Um die Funktion Zählenwenn (CountIf) in VBA zu nutzen, kannst du folgende Schritte befolgen:

  1. Hilfsspalte erstellen: Ermittle die Anzahl der Vorkommen eines Wertes in der Spalte U mit der Excel-Formel:

    =ZählenWenn(U:U;U3)

    Diese Formel musst du für jede Zeile bis zur letzten Datenzeile anwenden.

  2. Hilfsspalte kopieren: Kopiere die Ergebnisse der Hilfsspalte.

  3. Werte in CB:CG einfügen: Markiere die Zellen in den Spalten CB bis CG, und füge die kopierten Werte mit der Option „Werte“ und „Vorgang: Dividieren“ ein.

  4. Hilfsspalte löschen: Entferne die Hilfsspalte nach der Berechnung.

Hier ist der VBA-Code, der diese Schritte automatisiert:

Sub test()
    With ActiveSheet.UsedRange
        With .Columns(.Columns.Count + 1)
            .FormulaR1C1 = "=CountIf(C21,RC21)"
            .Formula = .Value
            .EntireColumn.Copy
            Range("CB:CG").PasteSpecial xlPasteValues, xlPasteSpecialOperationDivide
            .ClearContents
        End With
    End With
End Sub

Häufige Fehler und Lösungen

  1. Fehler bei der Formel: Wenn die Formel in der Hilfsspalte nicht funktioniert, überprüfe, ob du die richtige Zellreferenz verwendest. Sie sollte auf die jeweilige Zeile verweisen.

  2. Nicht alle Zeilen werden berechnet: Stelle sicher, dass deine Daten in den Spalten CB bis CG korrekt formatiert sind und dass die Hilfsspalte alle relevanten Daten enthält.

  3. VBA-Code läuft nicht: Achte darauf, dass du den Code im richtigen Modul und auf dem richtigen Arbeitsblatt ausführst.


Alternative Methoden

Eine alternative Methode zur Verwendung von Zählenwenn in VBA ist die Verwendung der CountIfs-Funktion, die mehrere Kriterien berücksichtigt. Hier ein Beispiel:

Dim Anzahl As Long
Anzahl = Application.WorksheetFunction.CountIfs(Range("U:U"), "Beispiel1")

Diese Methode ist besonders nützlich, wenn du komplexere Bedingungen hast und mehrere Kriterien in deiner Zählung berücksichtigen möchtest.


Praktische Beispiele

Nehmen wir an, du hast in deiner Tabelle folgende Daten:

U CB
Beispiel1 15
Beispiel2 20
Beispiel1 10
Beispiel3 5

Du kannst den VBA-Code verwenden, um die Werte in CB durch die Anzahl der Vorkommen in U zu dividieren. Das Ergebnis für Beispiel1 würde dann so aussehen:

  • In Zeile 1: 15 / 2 = 7.5
  • In Zeile 3: 10 / 2 = 5

Tipps für Profis

  • Verwende Named Ranges: Wenn du häufig mit bestimmten Bereichen arbeitest, kannst du diese als benannte Bereiche definieren, um deinen Code übersichtlicher zu gestalten.

  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen in deinem VBA-Code, um potenzielle Probleme frühzeitig zu erkennen.

  • Leistung optimieren: Wenn du mit großen Datenmengen arbeitest, kann es hilfreich sein, die Bildschirmaktualisierung vorübergehend auszuschalten, um die Ausführungsgeschwindigkeit zu erhöhen:

    Application.ScreenUpdating = False
    ' ... Dein Code ...
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich CountIf in VBA verwenden?
Du kannst die Funktion Application.WorksheetFunction.CountIf verwenden, um die Anzahl der Übereinstimmungen in einem bestimmten Bereich zu zählen.

2. Was ist der Unterschied zwischen CountIf und CountIfs?
CountIf zählt die Übereinstimmungen für ein einzelnes Kriterium, während CountIfs mehrere Kriterien gleichzeitig berücksichtigen kann.

3. Wie kann ich Fehler in meinem VBA-Code finden?
Aktiviere die Debugging-Funktion in VBA, um Schritt für Schritt durch deinen Code zu gehen und Fehlerquellen leichter zu identifizieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige