Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Maximum in For/Each-Schleife

Forumthread: Maximum in For/Each-Schleife

Maximum in For/Each-Schleife
15.08.2003 17:35:46
Mike E.
Hallo zusammen,
ich benötigte einmal Hilfe zu folgendem Problem:
ich möchte mittels For/Each-Schleife den Maximalwert eines Ranges ermitteln.
Bsp.:
For Each Zelle in Bereich
Msgox(Grösste Zahl im Bereich)
Next Zelle
Über Hilfe würde ich mich freuen.
Vielen Dank und viele Grüße
Mike
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Maximum in For/Each-Schleife
15.08.2003 17:47:53
ChrisL
Hi Mike
Application.Worksheetfunction.Max(Bereich)
Gruss
Chris

Danke dem Retter!
15.08.2003 17:59:17
Mike E.
Hi Chris,
vielen Dank. Da wäre ich so schnell wohl nicht d'rauf gekommen!
Schönes Wochenende
Mike

Nachfrage: Maximum in For/Each-Schleife
15.08.2003 18:04:23
Mike E.
Hallo Chris,
weisst du zufällig auch, wie ich die Adresse des Ergebnisses herausbekomme?
Vielen Dank und viele Grüße
Mike

Anzeige
Problem gelöst. o.T.
15.08.2003 19:44:17
Mike E.
und wie?
15.08.2003 20:08:30
ChrisL
Die andere Antwort hat sich übrigens mit dieser überschnitten.
Gruss
Chris

AW: und wie?
15.08.2003 20:13:18
Mike E.
ja, und diese habe ich nicht gelesen...(s.u.)
Grüße
Mike

Anzeige
AW: Nachfrage: Maximum in For/Each-Schleife
15.08.2003 20:05:12
ChrisL
Hi Mike
Kommt mir jetzt trotzdem nichts besser in den Sinn, als mit Schleife. Eigentlich dachte ich mit Find wärs vermutlich eleganter, aber irgendwie wollte Excel an diesem Freitag abend nicht mehr richtig, oder mir ist der ... in die Brine gefahren :-)
Jedenfalls nachstehend ein Vorschlag für Spalte A...
Option Explicit

Sub test()
Dim iZeile As Long, MaxZeile As Long
For iZeile = 1 To Range("A65536").End(xlUp).Row
If IsNumeric(Cells(iZeile, 1)) Then
If Cells(iZeile, 1) > MaxZeile Then MaxZeile = iZeile
End If
Next iZeile
MsgBox "Ergebnis: " & Cells(MaxZeile, 1).Address
End Sub

Vielleicht müsste man noch berücksichtigen, dass die Max-Zahl auch mehrfach vorkommen könnte. Dies liesse sich z.B. mit einer Array lösen.
Evtl. fällt mir morgen noch was besseres ein, dann würd ich mich melden.
cu
Chris

Anzeige
AW: Nachfrage: Maximum in For/Each-Schleife
15.08.2003 20:12:25
Mike E.
Hi Chris,
das ist auf jeden Fall auch eine feine Lösung.
Ich bin allerdings mit deinem ersten Vorschlag weitergekommen (Hintergrund: ich muss den Text, der links neben dem MaxWert steht ermitteln; deswegen die Frage nach der Adresse).
Aber es geht dann so (hier mit einer anderen WS-Function):
For Each zelle In Rng
If zelle = Application.WorksheetFunction.Large(Rng, 1) Then MsgBox _
(Cells(zelle.Row, zelle.Column - 1))

Next zelle
Vielen Dank und viele Grüße
Mike

Anzeige
AW: Nachfrage: Maximum in For/Each-Schleife
15.08.2003 20:34:20
ChrisL
Hi Mike
Alles klar, danke fürs Feedback und vorallem für die Lösung, da wär ich wohl nie drauf gekommen :-)
Übrigens, falls du das ganze gar nicht zwingend mit VBA brauchst, hilft dir vermutlich folgende Lösung, natürlich ohne Wochentag und so...
http://www.excelformeln.de/formeln.html?welcher=227
Also ich mach jetzt endgültig Schluss für heute.
Keep the flag flying
Chris

Anzeige
AW: Nachfrage: Maximum in For/Each-Schleife
15.08.2003 20:57:40
Mike E.
Hallo Chris,
ja, irgendwie denke ich bei jedem Problem an eine programmierte Lösung - nicht so schön...
Allerdings, warum ich hier programmiert hatte, hat folgenden Grund:
ich muss die vier größten Werte aus einem immer Variablen Bereich (sowohl Startzeile als auch Umfang des Bereichs; d.h. in wieviel Zeilen muss ich die vier größten Werte suchen).
Also ermittle ich mit zwei While/Wend-Schleifen jeweils Start- und End-Zeile und setze mir so den Bereich, innerhalb dessen ich mittels For/Each deinen Vorschlag umsetzen kann.
Viele Grüße
Mike

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Maximalwert in einer For/Each-Schleife ermitteln


Schritt-für-Schritt-Anleitung

Um den Maximalwert eines Bereichs in Excel mittels einer For/Each-Schleife zu ermitteln, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf eine beliebige Stelle im Projektfenster, wähle Einfügen und dann Modul.

  3. Code einfügen: Füge den folgenden VBA-Code in das Modul ein. Dieser Code sucht den größten Wert im Bereich A1:A10:

    Sub MaxInRange()
       Dim MaxWert As Double
       Dim Zelle As Range
       Dim Bereich As Range
    
       Set Bereich = Range("A1:A10")
       MaxWert = Application.WorksheetFunction.Max(Bereich)
    
       For Each Zelle In Bereich
           If Zelle.Value = MaxWert Then
               MsgBox "Größte Zahl im Bereich: " & Zelle.Value & " an Adresse: " & Zelle.Address
           End If
       Next Zelle
    End Sub
  4. Code ausführen: Schließe den VBA-Editor und drücke ALT + F8, wähle MaxInRange aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehlermeldung beim Ausführen: Wenn du eine Fehlermeldung erhältst, überprüfe, ob der angegebene Bereich korrekt ist. Stelle sicher, dass der Bereich auch tatsächlich Zahlen enthält.
  • Leere Zellen: Der Code funktioniert möglicherweise nicht wie erwartet, wenn leere Zellen im Bereich vorhanden sind. Du kannst dies überprüfen, indem du eine Bedingung hinzufügst, die leere Zellen ignoriert:

    If Not IsEmpty(Zelle) Then

Alternative Methoden

Falls du den Maximalwert ohne VBA ermitteln möchtest, kannst du die Excel-Funktion MAX() verwenden. Setze in einer Zelle Folgendes ein:

=MAX(A1:A10)

Dies gibt dir sofort den größten Wert im angegebenen Bereich zurück, ohne dass du ein Makro schreiben musst.


Praktische Beispiele

  1. Maximalwert ermitteln und benachbarte Zelle anzeigen: Wie bereits im Code gezeigt, kannst du den Maximalwert ermitteln und gleichzeitig einen Wert aus einer benachbarten Zelle anzeigen, indem du die Adresse des Maximalwerts abfragst.

  2. Mehrere Maximalwerte finden: Um mehrere Maximalwerte zu ermitteln, kannst du den LARGE-Befehl verwenden:

    For i = 1 To 4
       MsgBox "Größte Zahl " & i & ": " & Application.WorksheetFunction.Large(Bereich, i)
    Next i

Tipps für Profis

  • Fehlerbehandlung: Füge eine Fehlerbehandlung in deinen Code ein, um unerwartete Fehler abzufangen und dem Benutzer hilfreiche Hinweise zu geben.

  • Namen für Bereiche verwenden: Verwende benannte Bereiche, um deinen Code lesbarer zu machen. Anstatt Range("A1:A10") zu verwenden, könntest du Range("MeinBereich") nutzen, wenn dieser vorher definiert wurde.


FAQ: Häufige Fragen

1. Wie finde ich die Adresse des Maximalwerts in einer For/Each-Schleife?
Du kannst die Adresse der Zelle, die den Maximalwert enthält, einfach mit Zelle.Address ausgeben, wie im obigen Beispiel gezeigt.

2. Was mache ich, wenn der Bereich leere Zellen enthält?
Du kannst eine Bedingung hinzufügen, um leere Zellen zu ignorieren, indem du If Not IsEmpty(Zelle) Then verwendest, bevor du den Wert überprüfst.

3. Kann ich mehrere Maximalwerte finden?
Ja, du kannst die Funktion LARGE verwenden, um die n größten Werte in einem Bereich zu finden und diese in einer Schleife auszugeben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige