Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
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

vba - letzten Wert finden

vba - letzten Wert finden
17.11.2023 10:27:31
Fred
Hallo Excel-Experten,
Ich habe letztens ein Makro von Onur erhalten, welches mir den kleinsten Wert liefert.
Ich habe das Makro verändert um den letzten Wert zu ermitteln.
Makro:
Sub letzteWert5erGruppe()

Dim z, lz, zz, anf, x
Dim letzterWert As Double

anf = 3 ' ab Zeile 3
lz = ActiveSheet.Cells(Rows.count, 1).End(xlUp).Row ' bezieht sich auf HeimTeams, Spalte 8

For z = anf To lz ' von Zeile 3 bis letzte
letzterWert = 0 ' Zurücksetzen auf 0 für jede neue Zeile
x = 0 ' Zurücksetzen des Zählers für jede neue Zeile

For zz = z + 1 To lz
If Cells(zz, 8) = Cells(z, 8) Then
If Cells(zz, 36) > "" Then
letzterWert = Cells(zz, 36)
End If
End If

x = x + 1
If x = 5 Then Exit For
Next zz

' Überprüfen, ob 5 aufeinanderfolgende gleiche Werte gefunden wurden
If x = 5 Then
' Überprüfen, ob in den nächsten 5 Zeilen weitere gleiche Werte in Spalte "H" vorhanden sind
Dim weitereWerteGefunden As Boolean
weitereWerteGefunden = False

For zz = z + 1 To z + 5
If zz = lz Then
If Cells(zz, 8) = Cells(z, 8) Then
weitereWerteGefunden = True
Exit For
End If
End If
Next zz

' Wenn weitere gleiche Werte gefunden wurden, dann letzterWert in Spalte "AN" eintragen
If weitereWerteGefunden Then
Cells(z, 40) = letzterWert
Else
' Andernfalls leeren String in Spalte "AN" eintragen
Cells(z, 40) = ""
End If
End If
Next z
End Sub


Das Eintragen entsprechender Ergebnisse klappt bestens,- allerdings wird auch das Ergebnis eingetragen, wenn weniger als 5 gleiche Werte der entsprechenden Zellen in Spalte "H" gefunden werden. Kann ein Excel-Experte mal drauf schaun und mir eine Lösung anbieten.
In der Beispielmappe ist ebenfalls entsprechendes Wunschergebnis eingetragen.
Beispielmappe
https://www.herber.de/bbs/user/164377.xlsb

Gruss
Fred

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba - letzten Wert finden, nach Kriterien
17.11.2023 23:06:16
Fred
Hallo Excel-Profis
muss bei
If weitereWerteGefunden Then

Cells(z, 40) = letzterWert
hier eine weitere Prüfung rein?

Gruss
Fred

AW: vba - letzten Wert finden, nach Kriterien
18.11.2023 14:35:41
GerdL
Moin Fred,

vielleicht geht es so.
Sub letzteWert5erGruppe()


Dim zeile As Long, X As Double, zz As Long

For zeile = 3 To Cells(Rows.Count, 8).End(xlUp).Row - 5 ' bezieht sich auf HeimTeams, Spalte 8 =H
letztetWert = 0
If WorksheetFunction.CountIf(Cells(zeile + 1, 8).Resize(5), Cells(zeile, 8)) = 5 Then
For zz = zeile + 5 To zeile + 1 Step -1
If Cells(zz, 36) > 0 Then X = Cells(zz, 36): Exit For
Next zz
If X > 0 Then
Cells(zeile, 42) = X
Else
Cells(zeile, 42) = ""
End If
End If
Next zeile

End Sub

Gruß Gerd
Anzeige
AW: vba - letzten Wert finden, nach Kriterien
18.11.2023 14:54:58
Fred
Hallo Gerd,
ein ganz anderer Ansatz als meiner (vielleicht daher auch mit dem gewünschten Ergebnis :-)
In deinerVersion wird ja eine For-Schleife verwendet, die von der dritten Zeile bis zur vorletzten Zeile (minus 5) durchläuft - In meiner, wird ebenfalls eine For-Schleife verwendet, die von der dritten Zeile bis zur letzten Zeile durchläuft.
Bei den Bedingungen für den letzten Wert, wird der letzte Wert aus Spalte "AJ" (Column 36) genommen, wenn die nächsten 5 Zeilen den gleichen Wert in Spalte "H" (Column 8) haben. Ähnlich bei mir, allerdings wurde zusätzlich überprüft, ob weitere 5 gleiche Werte in den nächsten Zeilen vorhanden sind.
Und dann noch der Unterschied beim Zähler und der Bedingung für den inneren Loop ...


Vielen Dank Gerd für deine Kompetenz und Mühe! Ich werde noch weiter das Makro auseinandernehmen um zu verstehen, wie man so etwas annähernd optimal aufbaut ....

Schönes Wochenende!

Gruss
Fred

Anzeige
AW: vba - letzten Wert finden, nach Kriterien
19.11.2023 10:15:21
Fred
Hallo Gerd,
ich habe mal 2 Veränderungen eingetragen:
If Cells(zz, 36) >= 0 Then X = Cells(zz, 36): Exit For

&
If X >= 0 Then

weil: wenn die Werte in Spalte 36 zB alle 0 beinhalten, wird ein falsches Ergebnis in entsprechende Zeilen eingetragen.

Gruss
Fred
AW: vba - letzten Wert finden, nach Kriterien
19.11.2023 10:34:17
GerdL
Hallo Fred,

wenn's so funktioniert, ist es gut.
Ansonsten könntest du meinen Kopierfehler
letzter Wert = 0
durch
X = 0
ersetzten.

Gruß Gers

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige