Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Anzahl zählen per VBA / Spalten variabel

Anzahl zählen per VBA / Spalten variabel
16.07.2021 09:14:07
Aleks
Guten Morgen an Alle!
Ich würde gerne die Excel-Formel "=ANZAHL2(A3:A10)" in VBA so gestalten, dass ich diese in einer For-Schleife einbauen kann, um die Zellen der Spalten (in dem Fall "A") variabel zu zählen.
Gezählt werden sollen A3:A10, B3:B10, C3:C10 bis zur letzten vorhanden Spalte. Die Formel soll dann in A2, B2, C2 etc. eingetragen werden.
Die Schleife bestimmt anhand der Werte in Zeile 1, wie lange diese laufen soll.
Also sowas in der Art:
For Spalte = 1 to Worksheets(1).Cells(1, Columns.Count).End(xlToLeft).Column
Worksheets(1).Cells(2, Spalte).FormulaLocal = "=ANZAHL2(Spalte &3:Spalte & 10)"
next Spalte
Hat jemand eine Idee, wie ich die Formel variabel gestalten kann?
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzahl zählen per VBA / Spalten variabel
16.07.2021 09:29:39
Daniel
HI
wenn du Variablen in Text/Formeln einbauen willst, dann geht das so, hier mal zwei Möglichkeiten:
a) "TextTeil1" & Variable & "TextTeil2"
b) Replace("TextTeil1xxxTextTeil2", "xxx", Variable)
brauchst du hier aber nicht. Verwende die Z1S1/R1C1-Addressierungsart.
insbesondere, wenn wie bei dir gleiche Zeilen/Spalten links und rechts des "=" verwendet werden, werden dann die Formeln einfacher.
außerdem brauchst du hier keine Schleife. Du kannst die Formel in alle Zellen gleichzeitig eintragen (geht immer, wenn die Formel per Copy/Paste übertragbar ist).
auch wenns um berechnete Spalten geht, ist Z1S1 vorteilhaft. Hier gibst du auch die Spalte als Zahl ein, bei A1-Addressierungsart brauchst du den Spaltenbuchstaben, dh du müsstest aus der berechneten Spaltennummer erst noch den Spalten buchstaben machen.

Range(Worksheets(1).Cells(1, 2), Worksheets(1).Cells(1, Columns.Count).End(xlToLeft).Offset(1, 0)).FormulaR1C1Local = "=ANZAHL2(Z3S:Z10S)"
Gruß Daniel
Anzeige
AW: Anzahl zählen per VBA / Spalten variabel
19.07.2021 11:01:48
Aleks
Hallo Daniel,
vielen Dank erst einmal. Leider wurde meine Antwort von letztens nicht gepostet, weshalb ich jetzt diese noch einmal verfassen muss.
Deine Formel sieht sehr interessant aus. Ich würde mein Vorhaben aber gerne variabel haben wollen, nur bekomme ich es mit den Spalten so nicht hin. Auch mit deinen Vorschlägen weiß ich weiterhin nicht, wie ich z.B. durch Replace aus Spalte F (was ja der 6. Spalte entspricht) diese so umändern könnte, so dass ich diese in einer For-Schleife verarbeiten kann.
Mein Beispiel noch einmal:
For Spalte = 1 to Worksheets(1).Cells(1, Columns.Count).End(xlToLeft).Column
Worksheets(1).Cells(2, Spalte).FormulaLocal = "=ANZAHL2(Spalte &3:Spalte & 10)"
next Spalte
Hast du da einen Vorschlag?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Anzahl zählen per VBA: Spalten variabel gestalten


Schritt-für-Schritt-Anleitung

Um die Anzahl der Zellen in einer Excel-Spalte per VBA zu zählen, kannst du die ANZAHL2-Funktion verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, um dies in einer For-Schleife zu implementieren:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle Einfügen > Modul.

  3. Gib den folgenden Code ein:

    Sub ZaehleSpalten()
       Dim Spalte As Integer
       Dim LetzteSpalte As Integer
    
       ' Ermittelt die letzte Spalte in Zeile 1
       LetzteSpalte = Worksheets(1).Cells(1, Columns.Count).End(xlToLeft).Column
    
       ' Schleife über die Spalten
       For Spalte = 1 To LetzteSpalte
           Worksheets(1).Cells(2, Spalte).FormulaLocal = "=ANZAHL2(" & Cells(3, Spalte).Address & ":" & Cells(10, Spalte).Address & ")"
       Next Spalte
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro zu starten. Die Anzahl der nicht leeren Zellen wird in der zweiten Zeile für jede Spalte von A bis zur letzten vorhandenen Spalte eingetragen.


Häufige Fehler und Lösungen

  • Fehler: "Subscript out of range"

    • Lösung: Überprüfe, ob das Arbeitsblatt existiert und korrekt benannt ist.
  • Fehler: Formel wird nicht korrekt angezeigt

    • Lösung: Stelle sicher, dass du die richtige Adressierungsart verwendest. In diesem Fall verwenden wir FormulaLocal, um die lokale Sprache der Excel-Formel zu berücksichtigen.
  • Fehler: Keine Zellen gezählt

    • Lösung: Überprüfe, ob in den angegebenen Zellen tatsächlich Daten vorhanden sind.

Alternative Methoden

Eine alternative Methode zur Verwendung der ANZAHL2-Funktion ist die Verwendung von Excel-Formeln direkt in den Zellen, anstatt in VBA zu programmieren. Du kannst die folgende Formel in die Zelle A2 eingeben und nach rechts ziehen:

=ANZAHL2(A3:A10)

Diese Methode ist einfach und benötigt keine Programmierkenntnisse, kann jedoch bei großen Datenmengen weniger effizient sein.


Praktische Beispiele

Angenommen, du hast folgende Daten in den Zellen A3 bis C10:

A B C
1 2
3 5
6 7
8 9 10

Nach dem Ausführen des VBA-Codes werden in den Zellen A2, B2 und C2 die Werte 5, 5 und 3 angezeigt, da diese die Anzahl der nicht leeren Zellen in den entsprechenden Spalten sind.


Tipps für Profis

  • Nutze Range und Cells für dynamische Bereichsangaben, um die Flexibilität deines Codes zu erhöhen.
  • Experimentiere mit der FormulaR1C1-Syntax, um Formeln effizienter zu gestalten.
  • Du kannst auch die xlToLeft-Konstante in Kombination mit der End-Methode verwenden, um die letzte verwendete Spalte zu ermitteln.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Buchstaben in einer Spalte zählen? Um die Anzahl der Buchstaben in einer Spalte zu zählen, kannst du die LÄNGE-Funktion in Kombination mit SUMME verwenden. Zum Beispiel:

=SUMME(LÄNGE(A3:A10))

2. Ist es möglich, den Code für mehrere Arbeitsblätter zu verwenden? Ja, du kannst den Code anpassen, um über mehrere Arbeitsblätter zu iterieren. Verwende eine Schleife, um durch die Arbeitsblattnamen zu iterieren und die Zählung für jedes Blatt anzuwenden.

Mit diesen Informationen solltest du in der Lage sein, die Anzahl der Spalten in Excel per VBA effizient zu zählen und verschiedene Probleme zu beheben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige