Werte vergleichen

Hallo,
bin absoluter VBA-Neuling, also Antworten bitte für Dummys.
Ich soll aus einer Liste von Werten das Minimum suchen, und die laufende Nummer dafür angeben. Spalte A sind die laufenden Nummern und Spalte B die Werte. Das Minimum wird auch gefunden, aber der Wert für Spalte A ist immer 0.
Bis hierhin hab ich mir das irgendwie zusammengestrickt, aber weiter komme ich nicht:

Sub Min()
Dim x As Long, y As Long
Range(„E5“) = „=MIN(B1:B564)“
For x = 1 To 564
If Cells(x, 2) = „E5“ Then
y = Cells(x, 1)
Exit For
End If
Next x
Range(„E4“) = y
End Sub

Sobald dieses Problem gelöst ist, taucht direkt das 2. auf. Falls es mehrere Übereinstimmende Minimum-Werte gibt, soll immer das letzte genommen werden. Von Java kenn ich die Möglichkeit der Rückwärtssuche, aber wie geht das hier?

Danke schonmal für die Hilfe

Hi batman,

sorry, habe da nicht alles verstanden.

Ich soll aus einer Liste von Werten das Minimum suchen, und
die laufende Nummer dafür angeben.

Eine Liste hat ein Minimum, also einen kleinsten Wert, egal ob der jetzt mehrmals in der Liste steht.
Was also ist die laufende Nummer?

Spalte A sind die laufenden
Nummern und Spalte B die Werte. Das Minimum wird auch
gefunden, aber der Wert für Spalte A ist immer 0.

?

Sub Min()
Dim x As Long, y As Long
Range(„E5“) = „=MIN(B1:B564)“
For x = 1 To 564
If Cells(x, 2) = „E5“ Then
y = Cells(x, 1)
Exit For
End If
Next x
Range(„E4“) = y
End Sub

Benutze bitte den pre-Tag dann bleiben die Einrückungen des Codes erhalten.

Range(„E5“) = „=MIN(B1:B564)“

Soll in E5 die Formel rein um das Minimum zu finden oder das gefundene Minimum?

Sobald dieses Problem gelöst ist, taucht direkt das 2. auf.

Wenn ich das erste kapiert habe schau ich nach dem 2ten :smile:

Gruß
Reinhard

Hallo Reinhard,

hier die komplette Aufgabenstellung:
In Spalte A ist eine laufende Nummer (steht für Produktionstage, geht bis 564) eingetragen. In Spalte B die entsprechenden Werte (steht für den Ausschuss der produzierten Ware). Ich soll nun mittels eines VBA-Programms das Minimum des Ausschusses finden, und dieses in der Zelle (E5) ausgeben. Falls mehrere identische Minimum-Werte auftauchen, soll nur der Wert mit der höchsten lfd. Nummer ausgegeben werden. Diese lfd. Nummer soll dann in Zelle E4 ausgegeben werden.

Das Problem ist jetzt, dass das Programm mir zwar den korrekten Min-Wert ausgibt, aber die lfd. Nummer immer 0 ist. Ich habe festgestellt, dass das Programm die If-Schleife überhaupt nicht durchläuft, oder die If-Bedingung zumindest als nicht erfüllt ansieht. Habe da einfach mal y = 100 eingegeben, es kam aber am Ende trotzdem 0.

Sub Min()
 Dim x As Long, y As Long
 Range("E5") = "=MIN(B1:B564)"
 For x = 1 To 564
 If Cells(x, 2) = "E5" Then
 y = Cells(x, 1)
 Exit For
 End If
 Next x
 Range("E4") = y
End Sub

Da ja der Min-Wert mit der höchsten lfd. Nummer gesucht ist, kann ich dann nicht einfach die For-Schleife umdrehen? Also

 For x = 564 To 1 

?
Vielen Dank für die Antwort und für den Hinweis mit Pre, so sieht es direkt viel übersichtlicher aus.