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

Forumthread: Formel über gefilterte Zeilen

Formel über gefilterte Zeilen
23.11.2022 15:19:11
Angelika
Hallo VBA Profis,
ich hab noch ne Frage, ich habe eine größere Tabelle die ich mit einem Autofilter teilweise gesteuert wird,
ich möchte jetzt über den VK, aber nur für die gefilterten Daten eine Formel drüber laufen lassen, die
nicht sichtbaren Zellen sollen davon unberührt bleiben. In einer normalen Tabelle funktioniert es,
aber in einer Intelligenten-Tabelle leider nicht, berechnet somit auch alle ausgeblendeten Zellen.
Wie kann ich dies mit VBA unterbinden---- ( ICH MÖCHTE NUR DIE ZELLEN BERECHNEN DIE GEFILTERT SIND)
Ich hab dieser Frage mal eine kleine Testdatei beigefügt.
Vielleicht kann mir jemand helfen, besten Dank im Voraus
Grüße
Angelika
https://www.herber.de/bbs/user/156360.xlsm
Kunde Lieferant Rabattgruppe Nettopreis Aufschlag VK Spalte1 Spalte2
10500 Gira A500 5 1,05 5,25 -94,75
10500 Gira A500 5 1,05 5,25 -94,75
10500 Gira A500 5 1,05 5,25 -94,75
10500 Jung A600 6 1,1 6,6 -93,4
10500 Jung A600 6 1,1 6,6 -93,4
10500 Jung A600 6 1,1 6,6 -93,4
10500 Busch A700 7 1,7 11,9 -88,1
10500 Busch A700 7 1,7 11,9 -88,1
10500 Busch A700 7 1,7 11,9 -88,1
10500 Berker A900 8 1,2 9,6 -90,4
10500 Berker A900 8 1,2 9,6 -90,4
10500 Berker A900 8 1,2 9,6 -90,4
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 15:27:18
Daniel
Hi
es wäre natürlich hilfreich, wenn du genauer beschreiben könntest, was du machen willst.
in VBA kann man beispielsweise mit Range(...).SpecialCells(xlcelltypevisible) die angegebene Range auf die sichtbaren Zellen einschränken.
Für Formeln gibt es die übergeordneten Funktionen Teilergebnis und Aggregat, bei denen man angeben kann, dass nur die sichtbaren Zellen für die Berechnung verwendet werden sollen.
Gruß Daniel
Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 15:40:16
Angelika
Hallo,
entschuldigung, wenn ich mich nicht richtig ausgedrückt habe. Ja ich ich möchte die Range auf den sichtbaren Zeilen in der intelligenten Tabelle beschränken.
Die Berechnung sollte dann auch nur auf den ausgewählten Bereich ausgeführt werden, in dem Beispiel ist es ja nur eine Mulitiplikation von eine Zelle die dann
ausgegeben sollte.
Grüße
Angelika
Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 15:43:52
onur
Diese Beschreibung ist auch nicht genauer. Erst schreibst du "Range", dann sprichst du von EINER Zelle.
Wie wäre es mal mit einem Beispiel?
AW: Formel über gefilterte Zeilen
23.11.2022 15:30:57
onur
" eine Formel drüber laufen lassen" - Was für Eine?
AW: Formel über gefilterte Zeilen
23.11.2022 15:45:43
Angelika
ich hab eine Testdatei hochgeladen.... es soll nur ein Beispiel sein... in meiner richtigen Tabelle sind einfache Aufschläge und Abschläge einer Zeile / Zelle zu berechnen.
Mein Problem ist, obwohl ich Zeilen gefiltert habe, werden in der intelligenten Tabelle alle Zeilen berechnet und nicht nur die Sichtbaren.
Grüße
Angelika
Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 15:49:03
onur
Eine "Testdatei", die nicht viel mit dem Problem gemeinsam hat, bringt auch nix.
Wo sind denn da irgendwelche Berechnungen?
AW: Formel über gefilterte Zeilen
23.11.2022 15:56:58
Angelika
Die Berechnung ist in Spalte H..... wenn man einen Filter setzt auf den Nettopreis (Filter = 5 und 8), und ich löse die

Sub Formel aus, dann berechnet es mir alle
Zeilen und nicht nur die gefilterten der Spalte H.

Sub Test_Filter_Formel()
With ThisWorkbook.Worksheets("Tabelle1")
.Range("A1").AutoFilter
.Range("D1").AutoFilter 4, Array("5", "6"), xlFilterValues
End With
End Sub

Sub Formel()
Dim iRow As Integer
iRow = ThisWorkbook.Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
With ThisWorkbook.Worksheets("Tabelle1")
.Range("H2").Formula = "=RC[-2]-100"
.Range("H2:H" & iRow).FillDown
End With
End Sub

Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 15:53:50
Daniel
Hi
in einer intelligenten Tabelle ist es sinnvoll, wenn alle Zellen einer Spalte mit Formel die gleiche Formel enthalten.
wenn du willst, dass in Ausgeblendeten Zellen die Werte nicht berechnet werden, müsstest du das in der Formel darstellen.
also nicht: =D2*E2
sondern: =Wenn(Teilergebnis(3;D2);D2*E2;"")
mit dieser Formel wird dann, wenn die Zelle ausgeblendet ist, nichts gerechnet sondern nur der Text "" ausgegeben.
Gruß Daniel
Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 15:56:28
Daniel
andererseits bekommst du, wenn du eine Auswertung wie =Summe(F:F) durch =Aggregat(9;5;F:F) ersetzt, die Summe über die sichtbaren Zellen der Spalte F.
Gruß Daniel
AW: Formel über gefilterte Zeilen
23.11.2022 16:25:22
ChrisL
Hi
Etwas verwirrend. Eine mögliche Interpretation:

Sub t()
With Worksheets("Tabelle1").ListObjects("Tabelle1")
.Range.AutoFilter
.ListColumns("VK").DataBodyRange.ClearContents
.ListColumns("Nettopreis").Range.AutoFilter 4, Array("5", "6"), xlFilterValues
.ListColumns("VK").DataBodyRange.Formula = "=[@Nettopreis]*[@Aufschlag]"
End With
End Sub
cu
Chris
Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 16:51:10
Herbert_Grom
Hallo Angelika,
mit dieser Formel sollte es doch klappen:

=AGGREGAT(9;3;F:F)
9 = für Summe
3 = für Ausgeblendete Zeilen ignorieren
Servus
AW: Formel über gefilterte Zeilen
23.11.2022 17:17:00
Angelika
Vielen lieben Dank an alle.... ich bin begeistert von dieser Hilfsbereitschaft.
Vielen Dank, Grüße Angelika
Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 17:21:32
Herbert_Grom
Jetzt weiß ich aber immer noch nicht, ob es dir geholfen hat!
AW: Formel über gefilterte Zeilen
23.11.2022 17:41:09
onur
"Vielen lieben Dank an alle" ist definitiv KEIN Feedback - klingt eher nach auf den Boden gestreute Almosen.
Wenn mehrere Leute versucht haben, dir zu helfen, solltest du auch mal dir die Mühe machen, dich zu den einzelnen Beiträge zu äussern.
Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 19:10:37
JoWE
Ich denke das "ich bin begeistert von dieser Hilfsbereitschaft" schon recht deutlich zum Ausdruck bringt, dass zum einen zumindest eine der Lösungen funktioniert und zum anderen damit alle die hier zur Frage gepostet hatten damit ausreichend lobend angesprochen sind.
Wäre Angelika sonst begeistert?
Seid doch bitte nicht so empfindlich.
Gruß
Jichen
Anzeige
AW: Formel über gefilterte Zeilen
23.11.2022 19:41:23
Christian
Hallo zusammen, ja ich muss noch testen, hab heute noch einen anderen Termin, sobald ich getestet habe und es funktioniert gebe ich natürlich Bescheid… Vielen Dank
Angelika
andere Konzept...
23.11.2022 17:34:45
Yal
Hallo Angelika,
mit einer User Defined Function kann man den Zustand der Zeile ausgeben (muss in einem allgemeine Modul abgelegt werden):

Public Function IstZeileSichtbar(Optional Target As Range) As Boolean
If Target Is Nothing Then Set Target = Application.Caller
IstZeileSichtbar = Not Target.EntireRow.Hidden
End Function
= IstZeileSichtbar()
ergibt dann WAHR oder FALSCH je nach dem, ob die Zeile gefiltert ist oder nicht.
Man sieht aber nur WAHR.
Mit
= IstZeileSichtbar() * 1
sieht man zwar nur einser, aber eine Summe über die ganze Spalte zeigt, dass alle nicht sichtbare Zelle null sind.
Man kann entweder eine Wenn auf dem Wahr/Falsch oder eine Multiplikation auf dem 1/0 vornehmen, um das gewünschte Ergebnis zu erreichen.
VG
Yal
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel-Formel über gefilterte Zeilen anwenden


Schritt-für-Schritt-Anleitung

  1. Setze den Autofilter:

    • Markiere den Bereich deiner Tabelle und aktiviere den Autofilter. Dies kannst du über das Menü "Daten" > "Filter" erreichen.
  2. Berechne die Werte nur in sichtbaren Zellen:

    • Um eine Excel-Formel auf gefilterten Bereich anzuwenden, kannst du die Funktion Teilergebnis oder AGGREGAT verwenden. Zum Beispiel:
      =WENN(TEILERGEBNIS(3;D2);D2*E2;"")
    • Diese Formel multipliziert die Werte in den Zellen D2 und E2 nur, wenn die Zeile sichtbar ist.
  3. Anwenden der Formel auf die gesamte Spalte:

    • Um die Formel auf alle gefilterten Zellen anzuwenden, ziehe das Ausfüllkästchen in der unteren rechten Ecke der Zelle nach unten.
  4. VBA-Makro für komplexe Berechnungen:

    • Wenn du VBA verwenden möchtest, kannst du folgendes Makro erstellen:
      Sub Formel()
       Dim iRow As Integer
       iRow = ThisWorkbook.Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
       With ThisWorkbook.Worksheets("Tabelle1")
           .Range("H2").Formula = "=WENN(TEILERGEBNIS(3;D2);D2*E2;"""")"
           .Range("H2:H" & iRow).FillDown
       End With
      End Sub

Häufige Fehler und Lösungen

  • Problem: Die Formel berechnet auch ausgeblendete Zellen.

    • Lösung: Stelle sicher, dass du die Teilergebnis- oder AGGREGAT-Funktion verwendest, um nur auf gefilterte Daten zuzugreifen.
  • Problem: Die Formel wird nicht auf alle gefilterten Daten angewendet.

    • Lösung: Überprüfe, ob die Formel korrekt in der ersten Zelle eingegeben wurde und dass das Ausfüllkästchen verwendet wurde, um die Formel auf die anderen Zellen zu übertragen.

Alternative Methoden

  • Nutzung von SpecialCells:

    • In VBA kannst du auch Range(...).SpecialCells(xlCellTypeVisible) verwenden, um nur auf sichtbare Zellen zuzugreifen. Beispiel:
      Dim visibleRange As Range
      Set visibleRange = ThisWorkbook.Worksheets("Tabelle1").Range("A1:A10").SpecialCells(xlCellTypeVisible)
  • User Defined Function (UDF):

    • Du kannst eine benutzerdefinierte Funktion erstellen, die überprüft, ob eine Zeile sichtbar ist:
      Public Function IstZeileSichtbar(Optional Target As Range) As Boolean
      If Target Is Nothing Then Set Target = Application.Caller
      IstZeileSichtbar = Not Target.EntireRow.Hidden
      End Function
    • Verwende dann =IstZeileSichtbar() in deiner Tabelle.

Praktische Beispiele

  • Berechnung von VK:

    • Wenn du den Verkaufspreis (VK) auf Basis des Nettopreises und des Aufschlags berechnen möchtest, kannst du die folgende Formel verwenden:
      =WENN(TEILERGEBNIS(3;[Nettopreis]);[@Nettopreis]*[@Aufschlag];"")
  • Summe über gefilterte Werte:

    • Um die Summe der gefilterten Werte in einer Spalte zu berechnen, nutze:
      =AGGREGAT(9;3;F:F)

Tipps für Profis

  • Verwende AGGREGAT: Es ist flexibler als TEILERGEBNIS, da du mehrere Funktionen kombinieren kannst.
  • Beachte die Datenstruktur: Stelle sicher, dass deine Daten sauber formatiert sind, um Fehler bei der Berechnung zu vermeiden.
  • Testen: Teste deine Formeln mit verschiedenen Filtereinstellungen, um sicherzustellen, dass sie korrekt funktionieren.

FAQ: Häufige Fragen

1. Kann ich VBA verwenden, um nur gefilterte Zellen zu bearbeiten? Ja, du kannst SpecialCells(xlCellTypeVisible) in VBA verwenden, um nur mit sichtbaren Zellen zu arbeiten.

2. Was ist der Unterschied zwischen Teilergebnis und AGGREGAT? Teilergebnis ist einfacher, während AGGREGAT mehr Funktionen unterstützt und mehr Kontrolle über die Berechnung bietet, insbesondere bei gefilterten Daten.

3. Wie kann ich eine Formel nur in gefilterte Zellen einfügen? Verwende die Teilergebnis- oder AGGREGAT-Funktion in deiner Formel, um sicherzustellen, dass nur die sichtbaren Zellen berechnet werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige