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

Forumthread: Teilergebnis per VBA

Teilergebnis per VBA
19.06.2009 15:57:32
Gregor
Hallo zusammen
Ich arbeite mit folgendem Makro:
'--- Summe bilden Spalten 8 bis 72
For Start = 8 To 72
Set Bereich = Range(Cells(4, Start), Cells(100, Start))
For Each c In Bereich
If Not IsNumeric(c) Then GoTo nächste
Next
Cells(intLastRow1, Start).Value = Application.WorksheetFunction.Sum(Bereich)
nächste:
Next
Anstelle der Summe (Betrag) möchte ich die Formel Teilergebnis (vermutlich mit Formula Local) in die entsprechenden Zellen schreiben, damit bei Filterung Summe variabel. Alle meine Versuche schlugen fehl. Wie lautet der richtige Befehl?
Vielen Dank
Gregor
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
SUBTOTAL
19.06.2009 16:19:26
NoNet
Hallo Gregor,
die Funktion TEILERGEBNIS() heisst in der englischne Variante (und auch in VBA) SUBTOTAL().
Hier die Befehlszeile zum eintragen der Funktion TEILERGEBNIS in die entsprechende Zelle :
Cells(intLastRow1, Start).formulaR1C1 = "=SUBTOTAL(R4C:R100C)"
Gruß, NoNet
Application.WorksheetFunction.Subtotal(9, Bereich)
19.06.2009 16:21:39
Matthias
Hallo
Userbild
https://www.herber.de/bbs/user/62577.xls
Gruß Matthias
Anzeige
falsch gelesen, sorry Du willst ja die Formel oT
19.06.2009 16:30:16
Matthias
AW: Application.WorksheetFunction.Subtotal(9, Bereich)
19.06.2009 16:35:48
Gregor
Hallo zusammen
Das Beispiel von Matthias scheint mir der richtige Ansatz für mein Bedürfnis. Leider erhalte ich beim Test kein Subtotal. Zudem möchte ich nicht das eruierte Subtotal in die Zelle schreiben, sondern die Formel teilergebnis, damit bei einer Filterung die Summe angepasst wird.
Danke
Gregor
Anzeige
Einmal die 9 bitte...
19.06.2009 16:41:56
NoNet
Hallo Gregor,
ich hatte in meinem Post versehetnlich die 9 (für SUMME) vergessen - hier ist sie :
Cells(intLastRow1, Start).formulaR1C1 = "=SUBTOTAL(9,R4C:R100C)"
Gruß, NoNet
AW: Einmal die 9 bitte...
19.06.2009 16:59:11
Gregor
Vielen Dank, ich werde das übers Wochenende prüfen.
Gregor
AW: Einmal die 9 bitte...
20.06.2009 11:33:06
Gregor
Hallo NoNet
Perfekt, Vielen Dank.
Gregor
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Teilergebnis per VBA in Excel erstellen


Schritt-für-Schritt-Anleitung

Um ein Teilergebnis in Excel per VBA zu erstellen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu starten.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Sub TeilergebnisEinfügen()
        Dim Start As Integer
        Dim intLastRow1 As Long
        intLastRow1 = Cells(Rows.Count, 1).End(xlUp).Row + 1 ' Nächste leere Zeile
    
        ' Summe bilden Spalten 8 bis 72
        For Start = 8 To 72
            Dim Bereich As Range
            Set Bereich = Range(Cells(4, Start), Cells(100, Start))
            Cells(intLastRow1, Start).FormulaR1C1 = "=SUBTOTAL(9,R4C:R100C)"
        Next Start
    End Sub
  4. Speichere das Makro und schließe den VBA-Editor.

  5. Führe das Makro aus: Gehe zu „Entwicklertools“ > „Makros“ und wähle „TeilergebnisEinfügen“ aus, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler: Kein Teilergebnis angezeigt

    • Lösung: Stelle sicher, dass du die richtige Formel verwendest. Der Befehl Cells(intLastRow1, Start).FormulaR1C1 = "=SUBTOTAL(9,R4C:R100C)" sollte korrekt in die Zelle geschrieben werden.
  • Fehler: Formel wird nicht aktualisiert bei Filterung

    • Lösung: Achte darauf, dass du die Formel mit SUBTOTAL anstelle von SUM verwendest. SUBTOTAL passt sich automatisch an, wenn die Daten gefiltert werden.

Alternative Methoden

Neben der VBA-Methode kannst du auch manuell die Funktion TEILERGEBNIS verwenden:

  1. Wähle die Zelle aus, in der das Teilergebnis erscheinen soll.
  2. Gib die Formel ein: =TEILERGEBNIS(9;A4:A100) (wobei 9 für die Summe steht).
  3. Drücke Enter, um das Ergebnis anzuzeigen.

Diese Methode ist besonders nützlich, wenn du keine VBA-Kenntnisse hast.


Praktische Beispiele

Hier sind einige Beispiele, wie du SUBTOTAL in verschiedenen Szenarien verwenden kannst:

  • Summe aller sichtbaren Werte:

    Cells(intLastRow1, Start).FormulaR1C1 = "=SUBTOTAL(9, R4C:R100C)"
  • Durchschnitt aller sichtbaren Werte:

    Cells(intLastRow1, Start).FormulaR1C1 = "=SUBTOTAL(1, R4C:R100C)"
  • Anzahl der sichtbaren Werte:

    Cells(intLastRow1, Start).FormulaR1C1 = "=SUBTOTAL(2, R4C:R100C)"

Tipps für Profis

  • Nutze WorksheetFunction.Subtotal in VBA, wenn du programmgesteuert mit Teilergebnissen arbeiten möchtest.
  • Du kannst die Funktion Application.WorksheetFunction.Subtotal verwenden, um innerhalb von VBA Teilergebnisse zu berechnen und diese in Variablen zu speichern, bevor du sie in Zellen einfügst.
  • Denke daran, dass die Funktion SUBTOTAL eine sehr flexible Funktion ist, die sich an unterschiedliche Bedarfe anpassen lässt.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen TEILERGEBNIS und SUMME?
TEILERGEBNIS (SUBTOTAL) kann nur sichtbare Werte in gefilterten Daten summieren, während SUMME alle Werte berücksichtigt, unabhängig von ihrer Sichtbarkeit.

2. Wie kann ich die TEILERGEBNIS-Funktion in VBA verwenden?
Verwende die Methode Cells(x, y).FormulaR1C1 = "=SUBTOTAL(...) in deinem VBA-Skript, um die Formel in die gewünschte Zelle einzufügen.

3. Welche Excel-Version benötige ich für die Verwendung von SUBTOTAL in VBA?
Die Funktion SUBTOTAL ist in allen modernen Excel-Versionen verfügbar, also ab Excel 2007 und höher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige