vba- spielmin. finden, mit wenigsten
26.03.2023 18:16:48
Fred
Hallo Excel Profis,
ich habe da letzte Nacht ein Makro dahin "gewürgt", das es in der Tabelle die Spielminuten durchgeht und mir die 3 Spielminuten anzeigt, in denen (inclusive der nächsten 7 Minuten) die wenigsten Treffer fallen.
Aber ich bekomme es einfach nicht hin, entsprechend 5 Werte zu liefern.
Also die 5 Spielminuten, die einschließlich der folgenden 7 Minuten die wenigsten Treffer haben.
mein derzeitiges Konstrukt:
Sub c_3Kleinst()
Dim StartZelle As Range
Dim AnzahlSpalten As Long
Dim Titel As Long
Dim Summe As Double
Dim MinSumme1 As Double
Dim MinSumme2 As Double
Dim MinSumme3 As Double
Dim MinTitel1 As Long
Dim MinTitel2 As Long
Dim MinTitel3 As Long
Dim ws As Worksheet
Set ws = Worksheets("1Hz")
With ws.ListObjects("tab_1Hz")
Set StartZelle = .ListColumns(7).Range ' Start in Spalte G
AnzahlSpalten = .ListColumns.Count ' Anzahl der Spalten in der Tabelle
' Initialisiere die 3 minimalen Summen
MinSumme1 = Application.WorksheetFunction.Sum(StartZelle.Resize(, 8))
MinSumme2 = MinSumme1
MinSumme3 = MinSumme1
' Initialisiere die Titel der 3 minimalen Summen
MinTitel1 = 1
MinTitel2 = 1
MinTitel3 = 1
' Gehe alle Spalten von G bis CR durch
For Titel = 7 To AnzahlSpalten
' Berechne die Summe der aktuellen Spalte plus den folgenden 7 Spalten
Summe = Application.WorksheetFunction.Sum(StartZelle.Resize(, 8))
' Wenn die aktuelle Summe kleiner als die aktuell kleinste Summe ist, dann aktualisiere die Werte
If Summe MinSumme1 Then
MinSumme3 = MinSumme2
MinSumme2 = MinSumme1
MinSumme1 = Summe
MinTitel3 = MinTitel2
MinTitel2 = MinTitel1
MinTitel1 = Titel - 6 ' Korrigiere den Titel, da wir in Spalte G starten
ElseIf Summe MinSumme2 Then
MinSumme3 = MinSumme2
MinSumme2 = Summe
MinTitel3 = MinTitel2
MinTitel2 = Titel - 6 ' Korrigiere den Titel, da wir in Spalte G starten
ElseIf Summe MinSumme3 Then
MinSumme3 = Summe
MinTitel3 = Titel - 6 ' Korrigiere den Titel, da wir in Spalte G starten
End If
' Verschiebe die Startzelle um eine Spalte nach rechts
Set StartZelle = StartZelle.Offset(, 1)
Next Titel
' Gib die Ergebnisse aus
ws.Range("Da2").Value = MinTitel1
ws.Range("Db2").Value = MinSumme1
ws.Range("Da3").Value = MinTitel2
ws.Range("Db3").Value = MinSumme2
ws.Range("Da4").Value = MinTitel3
ws.Range("Db4").Value = MinSumme3
End With
End Sub
Ich bin schon irgendwie deshalb fix & foxi
https://www.herber.de/bbs/user/158448.xlsb
Kann ein Experte bitte mal drauf schauen und (wenn er durchblickt) mir die Lösung schreibt?!
Gruß
Fred