Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Onur ! Kannste mal gucken?!

Onur ! Kannste mal gucken?!
27.06.2023 18:04:47
Fred


Hallo Excel / VBA Experten,

vor kurzen habe ich von Onur ein Makro geschrieben bekommen, Mit dem in einer formatierten Tabelle in den Titeln 1 bis 40 die kleinsten 5 Summen (pro Spalte + 5 Spalten) ermittelt werden.
Große Klasse!

Dim StartTitel As Integer
Dim EndTitel As Integer
Dim Summe As Double
Dim MinSumme(1 To 5) As Double
Dim TitelMitMinSumme(1 To 5) As Integer
Dim i As Integer
Dim j As Integer
Dim StartZelle As Range
StartTitel = 1
EndTitel = 40

For j = 1 To 5
    MinSumme(j) = 1E+100
Next j

Set StartZelle = Worksheets("Scalping").ListObjects("tab_Scalping").ListColumns(7).Range

For Titel = StartTitel To EndTitel
    Summe = WorksheetFunction.Sum(StartZelle.Resize(, 6)) ' die 6 = bis einschließlich 5 folgende

    For i = 1 To 5
        If Summe  MinSumme(i) Then
            For k = 5 To i + 1 Step -1
                MinSumme(k) = MinSumme(k - 1)
                TitelMitMinSumme(k) = TitelMitMinSumme(k - 1)
            Next k
            MinSumme(i) = Summe
            TitelMitMinSumme(i) = Titel
            Exit For
        End If
    Next i

    Set StartZelle = StartZelle.Offset(0, 1)
Next Titel

For i = 1 To 5
    Worksheets("Listen").Cells(i + 3, "AH").Value = TitelMitMinSumme(i)
    Worksheets("Listen").Cells(i + 3, "AI").Value = MinSumme(i)
    Worksheets("Listen").Cells(i + 3, "AJ").Value = MinSumme(i) / 40
Next i
End Sub

Nun habe ich ein "Luxusproblemchen"
Ich möchte die Berechnungen auf gefilterte Daten anwenden.
Es ist durchaus machbar, dass ich die Zeilen lösche und die "gefilt. Daten" von der Haupttabelle in relevantes Sheet kopiere und diese mir dann ja ungefiltert gewünschtes anzeigen.
Allerdings sollen die Berechnungen vielfältig (Min / Max) und auf verschiedensten Zeilen angewendet werden.Es wäre viel "ressourcen-freundlicher", wenn ich also die Berechnungen auf gefilterte Daten anwenden könnte.
Meine Frage:
Kann das Makro dahin geändert werden, das gewünschtes sich auf gefilterte Daten bezieht??
Wie aber bereits geschrieben: Ich könnte auch jeden einzelnen Berechnungen zuvor die Datensätze durch "löschen, rein kopieren" entsprechend ändern.

Beispieltabelle:
https://www.herber.de/bbs/user/159743.xlsb


Gruss
Fred

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Onur ! Kannste mal gucken?!
27.06.2023 19:29:46
Fred
huch,
ich habe nun mal
Summe = WorksheetFunction.Sum(StartZelle.Resize(, 6))
durch

Summe = Application.WorksheetFunction.Subtotal(9, StartZelle.Resize(, 6))
ersetzt,
und das scheint auszureichen.
Gibt es Einwände?
Bin noch am überprüfen

Gruss
Fred


==BIFIQIHO==
27.06.2023 20:09:09
Luschi
Hallo Fred,

statt: Set StartZelle = Worksheets("Scalping").ListObjects("tab_Scalping").ListColumns(7).Range
so:
Set StartZelle =  Worksheets("Scalping").ListObjects("tab_Scalping").ListColumns(7).Range.SpecialCells(xlCellTypeVisible)
Damit werden nur die sichtbaren Zellen in Spalte 'G' angesprochen.

Gruß von Luschi
aus klein-Paris


Anzeige
AW: ==BIFIQIHO==
27.06.2023 20:39:19
Fred
Moin Luschi,
ich dachte eigentlich, das ich die simple Lösung gefunden habe.
Ich habe mal deine Korrektur eingesetzt
Set StartZelle =  Worksheets("Scalping").ListObjects("tab_Scalping").ListColumns(7).Range.SpecialCells(xlCellTypeVisible)
und daraufhin wird allerdings der Teil

Summe = WorksheetFunction.Sum(StartZelle.Resize(, 6))
aber auch die Version

Summe = Application.WorksheetFunction.Subtotal(9, StartZelle.Resize(, 6))
Gelb in der Fehlermeldung hinterlegt.

PS: was bedeutet: ==BIFIQIHO==
???

Gruss
Fred


Anzeige
AW: hab noch mal geguckt
28.06.2023 07:41:21
Luschi
Hallo Fred,

hab mal ein bißchen getestet und siehe da - man muß nur 1 Vba-Zeile ändern:
statt: Summe = WorksheetFunction.Sum(StartZelle.Resize(, 6))
neu: Summe = WorksheetFunction.Sum(StartZelle.Resize(, 6).SpecialCells(xlCellTypeVisible))
Damit werden nur die sichtbaren Zellen in der Summe berücksichtigt.

Gruß von Luschi
aus klein-Paris


AW: hab noch mal geguckt
28.06.2023 07:53:02
Oberschlumpf
Hi,

und kommt denn noch die Auflösung zur Frage "Was bedeutet BIFIQIHO?"
Würd auch mich interessieren - vielen Dank.

Ciao
Thorsten


AW: hab noch mal geguckt
28.06.2023 09:06:17
Fred
Guten Morgen Luschi !
Deine Korrektur :
Summe = WorksheetFunction.Sum(StartZelle.Resize(, 6).SpecialCells(xlCellTypeVisible))
gibt die richtigen Ergebnisse ohne Felermeldung zurück! Eine Frage noch,- ohne den Beitrag allzu lange in die Länge zu ziehen: Ist da in irgendeiner Hinsicht ein Unterschied zwischen

Summe = Application.WorksheetFunction.Subtotal(9, StartZelle.Resize(, 6))
und
Summe = WorksheetFunction.Sum(StartZelle.Resize(, 6).SpecialCells(xlCellTypeVisible))
??

Vielen Dank für deine Aufmerksamkeit!

Gruss
Fred


Anzeige
AW: hab noch mal geguckt
28.06.2023 19:02:16
Luschi
Hallo Fred,

eigentlich sind beide Varianten gleichwertig, aber es gibt auch noch eine 3. Variante:
Summe = Application.WorksheetFunction.Aggregate(9, 5, StartZelle.Resize(, 6))

Gruß von Luschi
aus klein-Paris


Was bedeutet BIFIQIHO?? owT
30.06.2023 09:51:07
Pappawinni
owT

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige