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

Forumthread: Teilergebnis über Spalten ohne ausgeblendete Sp.

Teilergebnis über Spalten ohne ausgeblendete Sp.
21.03.2013 12:53:56
Jockel
Hallo
ich habe folgendes Problem:
Ich möchte in der Zeile 1 (A1) eine Summe über B1, C1, D1, E1, F1 ... bilden.
Nun wollte ich, wenn zB die Spalten D und E ausgeblendet sind, dass diese in der Summe nicht berücksichtigt werden.
Wenn ich das zB über Zeilen mach, funktioniert das mit der Funktion TEILERGEBNIS mit der 109.
Das gleiche funktioniert aber wohl nicht, wie in meinem Beispiel über Spalten.
Gibt es eine andere Funktion, die das kann und die sich automatisch aktualisiert, wenn man gewisse Spalten wieder einblendet. (also kein VBA)
Danke
Jockel

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teilergebnis über Spalten ohne ausgeblendete Sp.
21.03.2013 12:59:38
Klaus
Hallo Jockel,
Teilergebniss (sowie Autofilter) funktionieren nicht vertikal.
Wenn VBA überhaupt nicht in Frage kommt, müsstest du entweder
A) Deinen Tabellenaufbau überdenken ... oder
B) alle Zellenausrichtungen um 90° ändern und dann STRG+ALT+PfeilLinks drücken
Ich schließe nicht aus, dass es eine Lösung mit ZELLEN.ZUORNDEN und NAME gibt ...
Aber ich frag nochmal: VBA darfs nicht sein? Das währ dann total einfach.
Grüße,
Klaus M.vdT.

Anzeige
AW: Teilergebnis über Spalten ohne ausgeblendete Sp.
21.03.2013 13:03:08
Jockel
Hi Klaus,
nein, also ist nicht so, dass es GARNICHT in Frage kommt. Wenn das die einzige Möglichkeit ist, dann mache ich es natürlich damit und baue ein aktualisieren ein.
Wenn du eine VBA Lösung hast, gerne .. :-)
Gruß
Jockel

falls VBA ....
21.03.2013 13:08:32
Klaus
... dann doch geht, hier währe die Function:
Function TEILSUMMESPALTE(r As Range)
Dim r2 As Range
For Each r2 In r
If r2.EntireColumn.Hidden = False Then
TEILSUMMESPALTE = TEILSUMMESPALTE + r2.Value
End If
Next r2
End Function

und im Blatt
=TEILSUMMESPALTE(B1:F1)+JETZT()*0
(das JETZT()*0 ist ein Trick, um die Formel volatil zu machen damit sie bei Calculate angefasst wird)
Grüße,
Klaus M.vdT.

Anzeige
Na, da warst du ja um meine Schreibzeit ...
21.03.2013 13:16:53
Luc:-?
…schneller, Klaus.
Jetzt weißt du auch, warum ich gern abkürze, aber das nützt offensichtlich nicht immer was! ;-]
Dein Trick mit dem FmlZusatz klappt übrigens auch nur so wie du es schreibst (mindestens 1 Klick in eine Leerzelle wird meist benötigt), aber das Einfügen von Application.Volatile hilft auch nicht besser.
Gruß Luc :-?

Anzeige
mW Nein! Das könnte ggf eine UDF ...
21.03.2013 13:10:32
Luc:-?
…von mir, Jockel,
die sich im Herber-Archiv finden müsste und einen entsprd reduzierten Bereich erzeugt, der dann summiert wdn könnte. Aber da müsste ich erst mal nachsehen.
Evtl wäre auch etwas mit DBSUMME zu machen, aber da wirst du die Spalten auch fest vorgeben müssen, es sei denn, du findest ein passendes Kriterium. Anderenfalls könnte man evtl etwas über eine Formel erreichen, die sich an den Spaltenköpfen orientiert, aber das müsste ich auch erst genauer sondieren.
Aber viell hat ja XlFmln schon was?!
Gruß Luc :-?

Anzeige
AW: mW Nein! Das könnte ggf eine UDF ...
21.03.2013 13:17:36
Klaus
Hallo Luc,
wenn ich dich als UDF-Papst das hier frage, ist das vielleicht als würde ich einen Klempner-Meister heranzitieren weil das Papier alle ist ... aber ich nutze die Gelegenheit einfach.
Warum funktioniert das
Function TEILSUMMESPALTE(r As Range)
TEILSUMMESPALTE = Application.WorksheetFunction.Sum(r.SpecialCells(xlCellTypeVisible))
End Function

nicht so wie ich es mir vorstelle?
mit r.SpecialCells(xlCellTypeVisible) greife ich doch nur die sichtbaren Zellen aus r, das UDF gibt mir aber immer die Gesamtsumme zurück, egal ob die Zellen ausgeblendet, oder gefiltert, oder Breite / Höhe 0 sind. Als Sub statt als Function
Sub test()
Dim r As Range
Set r = Range("C9:E9")
MsgBox Application.WorksheetFunction.Sum(r.SpecialCells(xlCellTypeVisible))
End Sub

gibt es mir das erwartete Teilergebniss.
Grüße,
Klaus M.vdT.

Anzeige
Soweit ich weiß, man hat das schon ...
21.03.2013 13:29:11
Luc:-?
…mehrfach festgestellt, Klaus,
funktionieren gewisse VBA-Methoden nicht in UDF, die in ZellFmln eingesetzt wdn. Offensichtlich verwenden diese Methoden Operationen, die Funktionen in Zellfmln verboten sind, weshalb die interne XlSteuerung diese dann einfach überspringt. Wir hatten so etwas in ähnlichem Zusammenhang auch mit Anzahlen und andersherum mit Suchen. Die Suche findet Begriffe in ausgeblendeten Zeilen/Spalten nicht, eine Funktion schon.
Gruß Luc :-?

Anzeige
AW: Soweit ich weiß, man hat das schon ...
21.03.2013 13:40:34
Klaus
Hallo Luc,
dass ich in einer UDF zB keine MsgBox oder InputBox verwenden kann/darf, wusste ich schon. Das ist ja auch irgenwie logisch, wenn man da kurz drüber nachdenkt.
Ich nehme aus deinem Beitrag jetzt mit, dass ich gedanklich keinen Fehler gemacht habe und mir einfach merken muss, dass Excel bestimmte Sachen innerhalb der UDF nicht kann - angefangen bei SpecialCells.
Danke sehr!
Grüße,
Klaus M.vdT.

Anzeige
Aber wohl gemerkt, nur bei Einsatz ...
21.03.2013 13:52:42
Luc:-?
…in ZellFmln, Klaus;
aber MsgBox und wohl auch InputBox gehören erstaunlicherweise nicht dazu. Die muss/sollte man in ZellFmln selbst vermeiden, sonst kanns dicke kommen… ;-)
Es lassen sich sogar Zellkommentare (u.a.?) anlegen, aber nicht (füllen und) formatieren (zumindest noch unter xl9).
Gruß Luc :-?
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Teilergebnis über Spalten ohne ausgeblendete Sp.


Schritt-für-Schritt-Anleitung

Um eine Summe über Spalten zu bilden und dabei ausgeblendete Spalten zu ignorieren, kannst du die folgende Methode verwenden:

  1. Erstelle eine neue Funktion: Du benötigst eine benutzerdefinierte Funktion (UDF) in VBA, um die Summe nur über sichtbare Zellen zu berechnen.

  2. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

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

  4. Kopiere den folgenden Code in das Modul:

    Function TEILSUMMESPALTE(r As Range)
       Dim r2 As Range
       For Each r2 In r
           If r2.EntireColumn.Hidden = False Then
               TEILSUMMESPALTE = TEILSUMMESPALTE + r2.Value
           End If
       Next r2
    End Function
  5. Verwende die Funktion in Excel: Gehe zurück zu deinem Excel-Blatt und gib die Formel ein, um die Summe zu berechnen:

    =TEILSUMMESPALTE(B1:F1)

Diese Formel berücksichtigt nur die sichtbaren Zellen und summiert die Werte entsprechend.


Häufige Fehler und Lösungen

  • Fehler: UDF gibt falsche Werte zurück: Wenn die Funktion TEILSUMMESPALTE nicht korrekt funktioniert, stelle sicher, dass du die Range korrekt übergibst. Es dürfen keine leeren Zellen dazwischen liegen.

  • Fehler: Summe wird nicht aktualisiert: Beachte, dass UDFs standardmäßig nicht automatisch aktualisiert werden. Füge JETZT()*0 hinzu, um die Formel volatil zu machen:

    =TEILSUMMESPALTE(B1:F1) + JETZT()*0
  • Fehler: Keine Ergebnisse bei ausgeblendeten Spalten: Überprüfe, ob die Spalten tatsächlich ausgeblendet sind. Manchmal können Filter angewendet sein, die das Ergebnis beeinflussen.


Alternative Methoden

Falls du VBA nicht verwenden möchtest, gibt es alternative Ansätze:

  1. Verwendung der Funktion SUBTOTAL: Diese Funktion kann jedoch nur Zeilen berücksichtigen. Eine direkte Summierung über ausgeblendete Spalten ist nicht möglich.

  2. PivotTables: Du kannst auch eine PivotTable verwenden, um die Summe ohne ausgeblendete Zeilen zu berechnen.


Praktische Beispiele

  • Beispiel 1: Angenommen, du hast die Werte in den Zellen B1 bis F1 (z.B. 10, 20, 30, 40, 50) und bläst die Spalten D und E auf. Mit der Funktion TEILSUMMESPALTE erhältst du 10 + 20 + 50 = 80.

  • Beispiel 2: Wenn du die gesamte Spalte B bis F summieren möchtest, während einige Spalten ausgeblendet sind, gehe wie folgt vor:

    =TEILSUMMESPALTE(B1:F1)

Diese Formel gibt dir die Summe der sichtbaren Werte zurück.


Tipps für Profis

  • Verwendung von SpecialCells: Wenn du mit VBA arbeitest, kannst du auch SpecialCells(xlCellTypeVisible) verwenden, um nur die sichtbaren Zellen zu summieren:

    Function TEILSUMMESPALTE(r As Range)
       TEILSUMMESPALTE = Application.WorksheetFunction.Sum(r.SpecialCells(xlCellTypeVisible))
    End Function
  • Regelmäßige Überprüfung: Achte darauf, dass die ausgeblendeten Spalten regelmäßig überprüft werden, um sicherzustellen, dass die Berechnungen korrekt bleiben.


FAQ: Häufige Fragen

1. Wie kann ich ausgeblendete Zeilen in Excel ignorieren?
Du kannst die Funktion TEILERGEBNIS mit dem Argument 109 verwenden, um die Summe nur über sichtbare Zeilen zu berechnen.

2. Gibt es eine Möglichkeit, die Summe ohne VBA zu bilden?
Leider ist es nicht möglich, ausgeblendete Spalten ohne VBA zu ignorieren. Eine PivotTable oder manuelle Filterung sind mögliche Alternativen.

3. Was ist der Unterschied zwischen SUMME und TEILERGEBNIS?
SUMME berücksichtigt alle Zellen, während TEILERGEBNIS die Sichtbarkeit der Zellen respektiert und daher optimale Ergebnisse bei gefilterten Daten liefert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige