Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

WorksheetFunction.Max

Forumthread: WorksheetFunction.Max

WorksheetFunction.Max
Gregor
Hallo
Ich habe Probleme mit der WorksheetFunction.Max oder Min
Folgenden Code habe ich in einer For ... Next-Abfrage geschrieben, funktioniert aber nicht, wenn nur eine Zahl im Range-Bereich:
Wert = WorksheetFunction.Max(Sheets(Quellblatt).Range(Cells(Start, 30), Cells(Start + Zähler, 30)))
Ist es möglich, dass die WorksheetFunction.Max oder Min nicht funktioniert, wenn im Range-Bereich nur in einer Zelle eine Zahl steht (zB eine 4, übrige Zellen leer) oder als Wert 0 herausgibt? Bei Zahlen in mehreren Zellen funktioniert diese Funktion.
Der Max-Wert sollte aber in diesem Fall 4 sein.
Danke und Gruss
Gregor
Anzeige
Eigentlich nicht! Arbeite mal mit einer With-...
31.08.2009 17:23:50
Luc:-?
...Konstruktion, Gregor...

With Sheets(Quellblatt)
Wert = WorksheetFunction.Max(.Range(.Cells(Start, 30), .Cells(Start + Zähler, 30)))
End With

...denn an den fehlenden Blattbezügen könnte es ggf liegen, falls die Zellen wirklich leer sind, d.h., gar nichts, auch keinen Leerstring "", enthalten). Alternative...
Wert = WorksheetFunction.Max(Sheets(Quellblatt).Range("AD" & Start & ":AD" & Start + Zähler))
Gruß Luc :-?
Anzeige
AW: Eigentlich nicht! Arbeite mal mit einer With-...
01.09.2009 11:06:14
Gregor
Hallo Luc
Vielen Dank für deinen Typ, habe es mit With probiert, erziele aber das gleich falsche Ergebnis. Stehe vor einem Rätsel. Die Zellen habe ich mit Zahl formatiert. Könnte es sein, dass irgendwie das Zahlenformat nicht logisch ist?
Die andere Anfrage bezüglich Zellschutz stammt nicht von mir, offenbar gibt es noch einen zweiten Gregor. Ich gebe ausnahmslos ein Feedback. Da ich dieses Forum sehr schätze bin ich bemüht, die Spielregeln auch einzuhalten.
Danke und Gruss
Gregor
Anzeige
AW: Eigentlich nicht! Arbeite mal mit einer With-...
01.09.2009 21:13:33
Gerd
Hallo Gregor!
aus der VBA-Hilfe ---"Tabellenblatt-Funktionen" zu MAX:
Enthalten die Argumente keine Zahlen, liefert MAX den Wert 0 (Null).
Gruß Gerd
Kann es sein,...
31.08.2009 18:19:04
Luc:-?
...Gregor,
dass du hier noch etwas offen hast, oder gibst du grdsätzl keine Rückmeldung (was dem Forumsgeist zutiefst widersprechen würde)?
Luc :-?
Anzeige
AW: Kann es sein,...
02.09.2009 07:43:11
Gregor
Hallo zusammen
Irgendwie liegt es an der Zellenformatierung. Ich habe es nun so gelöst, dass ich die Zellen vorher immer mit forgendem Code formatiere (den Code verstehe ich zwar nicht ganz, habe ihn aus dem Forum):
With Sheets(Quellblatt).Range(Cells(Start, 30), Cells(Start + Zähler, 30))
.Value = .Value
End With
Und nochmals, die Anfrage bezüglich Zellschutz stammt nicht von mir. Offenbar gibt's im Forum noch einen zweiten Gregor.
Danke und Gruss
Gregor
Anzeige
Der Code überschreibt den Zellwert mit...
02.09.2009 08:06:18
Luc:-?
...dem Zellwert, Gregor...
So etwas macht man normalerweise mit Formeln (.Formula = .Formula), um Berechnungen anzustoßen. Hier hilft es offensichtlich, das richtige Format zu behalten.
Morrn, Luc :-?
PS: Das Andere hatte ich schon mitbekommen. Nenne dich doch einfach GregorX oder so ähnlich... ;-)
Anzeige
...Äh, meinte natürl 'Wert zu fixieren'... owT
02.09.2009 08:08:58
Luc:-?
:-?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Verwendung der Max-Funktion in Excel VBA


Schritt-für-Schritt-Anleitung

Um die WorksheetFunction.Max-Funktion in Excel VBA effektiv zu nutzen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Sub MaxWertBestimmen()
       Dim Wert As Double
       Dim Start As Integer
       Dim Zähler As Integer
       Dim Quellblatt As String
    
       Quellblatt = "DeinBlattname" ' Hier den Namen des Arbeitsblattes einfügen
       Start = 1 ' Anpassen je nach Bedarf
       Zähler = 10 ' Anpassen je nach Bedarf
    
       With Sheets(Quellblatt)
           Wert = WorksheetFunction.Max(.Range(.Cells(Start, 30), .Cells(Start + Zähler, 30)))
       End With
    
       MsgBox "Der maximale Wert ist: " & Wert
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro zu starten und den maximalen Wert anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: MAX gibt 0 zurück, wenn nur eine Zahl vorhanden ist
    Wenn WorksheetFunction.Max den Wert 0 zurückgibt, kann das daran liegen, dass im angegebenen Bereich nur leere Zellen oder Zellen mit Leerstrings "" enthalten sind. Stelle sicher, dass die Zellen tatsächlich Zahlen enthalten.

  • Lösung durch Formatierung
    Um sicherzustellen, dass die Zellen als Zahlen formatiert sind, kannst du folgende Zeilen vor der Max-Berechnung hinzufügen:

    With Sheets(Quellblatt).Range(Cells(Start, 30), Cells(Start + Zähler, 30))
       .Value = .Value ' Dies konvertiert die Zellen in den richtigen Wert
    End With

Alternative Methoden

Falls du auf Probleme mit WorksheetFunction.Max stößt, kannst du folgende Alternativen in Betracht ziehen:

  • Verwendung von Application.Max:

    Wert = Application.Max(Sheets(Quellblatt).Range(Cells(Start, 30), Cells(Start + Zähler, 30)))
  • Direkte Zellreferenzen:

    Wert = Application.WorksheetFunction.Max(Sheets(Quellblatt).Range("AD" & Start & ":AD" & Start + Zähler))

Diese Methoden können helfen, wenn du Schwierigkeiten mit der WorksheetFunction.Max-Funktion hast.


Praktische Beispiele

Hier sind einige praktische Anwendungen der Max-Funktion in VBA:

  1. Maximalwert aus einer kompletten Spalte bestimmen:

    Sub MaxAusSpalte()
       Dim MaxWert As Double
       MaxWert = Application.WorksheetFunction.Max(Sheets("DeinBlattname").Columns(1)) ' Spalte A
       MsgBox "Der maximale Wert in Spalte A ist: " & MaxWert
    End Sub
  2. Maximalwert über ein dynamisches Range:

    Sub DynamischerMaxWert()
       Dim MaxWert As Double
       Dim LetzteZeile As Long
    
       LetzteZeile = Sheets("DeinBlattname").Cells(Rows.Count, 1).End(xlUp).Row ' letzte Zeile in Spalte A
       MaxWert = Application.WorksheetFunction.Max(Sheets("DeinBlattname").Range("A1:A" & LetzteZeile))
       MsgBox "Der maximale Wert ist: " & MaxWert
    End Sub

Tipps für Profis

  • Verwende With-Anweisungen: Vermeide wiederholte Blattbezüge, um deinen Code effizienter zu gestalten.

  • Formatierung: Achte darauf, dass die Zellen im richtigen Format sind, damit die excel vba max-Funktion die Daten korrekt verarbeiten kann.

  • Debugging: Nutze Debug.Print, um Werte während der Ausführung zu überprüfen und mögliche Fehlerquellen zu identifizieren.


FAQ: Häufige Fragen

1. Warum gibt WorksheetFunction.Max 0 zurück?
Wenn der angegebene Bereich keine Zahlen enthält oder nur leere Zellen vorhanden sind, gibt die Funktion 0 zurück.

2. Kann ich WorksheetFunction.Max in einer Schleife verwenden?
Ja, du kannst WorksheetFunction.Max in einer Schleife verwenden, um Werte iterativ zu vergleichen, achte jedoch darauf, dass der Range korrekt definiert ist.

3. Gibt es Unterschiede zwischen Application.Max und WorksheetFunction.Max?
Ja, Application.Max kann auch mit Arrays arbeiten, während WorksheetFunction.Max auf einen Range angewiesen ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige