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

Forumthread: vba - Max-Wert mit Bedingung

vba - Max-Wert mit Bedingung
MichiM
Hallo,
aus der Tabelle ZS_Stunden brauche ich den MAX-Wert in Spalte B, wenn in Spalte G die Bedingung (aus uf_projekte.cbo_projekt_auswahl) erfüllt ist.
Leider erhalte ich immer nur den Max-Wert der gesamten Tabelle.

Public Sub LetzterEintrag()
Dim LetzteZeileStd As Long
Dim iZeile As Long
With Worksheets("ZS_Stunden")
LetzteZeileStd = .Range("A65536").End(xlUp).Row
With Sheets("ZS_Stunden")
For iZeile = 4 To LetzteZeileStd
If .Cells(iZeile, 7).Value = uf_projekte.cbo_projekt_auswahl Then
varLetzterEintrag = WorksheetFunction.Max(.Columns(2))
Exit For
End If
Next iZeile
End With
End With
uf_projekte.text_LetzterEintrag.Caption = Format(varLetzterEintrag, "dd.mm.yyyy")
End Sub


Kamm mir jemand auf die Sprünge helfen? Im Forum finde ich nur Ergebnisse zur Max-Wert ohne Bedingung in anderer Spalte...
LG
MichiM

Anzeige

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

Betreff
Benutzer
Anzeige
AW: vba - Max-Wert mit Bedingung
28.06.2009 13:43:57
Hajo_Zi
Halo Mich,
warum mit VBA?
Tabelle2
 BG
11aus uf_projekte.cbo_projekt_auswahl
22aus uf_projekte.cbo_projekt_auswahl
33aus uf_projekte.cbo_projekt_auswahl
445 
556 
64aus uf_projekte.cbo_projekt_auswahl
79aus uf_projekte.cbo_projekt_auswahl
87aus uf_projekte.cbo_projekt_auswahl
93aus uf_projekte.cbo_projekt_auswahl
102aus uf_projekte.cbo_projekt_auswahl
119 

verwendete Formeln
Zelle Formel
B11 {=MAX(WENN(G1:G10="aus uf_projekte.cbo_projekt_auswahl";B1:B10))}
{} Matrixformel mit Strg+Umschalt+Enter abschließen

Tabellendarstellung in Foren Version 1.8



Anzeige
AW: vba - Max-Wert mit Bedingung
28.06.2009 13:55:13
MichiM
Hallo Hajo,
vba, weil ich das Ergebnis anschl. in einer Userform anzeigen muss.
Aber habe mich wahrscheinlich nicht richtig ausgedrückt:
Der gesuchte Wert kommt aus der ComboBox (cbo_projekt_auswahl) in der Userform (uf_projekte)
LG
MichiM
AW: vba - Max-Wert mit Bedingung
28.06.2009 14:01:35
Hajo_Zi
Hallo Michi,

Option Explicit
Public Sub LetzterEintrag()
Dim LetzteZeileStd As Long
Dim iZeile As Long
Dim LoWert As Long
With Worksheets("ZS_Stunden")
LetzteZeileStd = .Range("A65536").End(xlUp).Row
With Sheets("ZS_Stunden")
For iZeile = 4 To LetzteZeileStd
If .Cells(iZeile, 7).Value = uf_projekte.cbo_projekt_auswahl Then
If LoWert 


Gruß Hajo

Anzeige
AW: vba - Max-Wert mit Bedingung
28.06.2009 14:21:21
MichiM
Hallo Hajo,
das klappt - Danke.
Wenn ich das jetzt richtig verstanden habe, müsste ich doch für den MIN-Wert
If LoWert in
If LoWert > .Cells(iZeile, 2) Then LoWert = .cells(iZeile, 2)
abändern, oder?
Komischerweise gibt er mir hier "30.12.1899" als Ergebnis - die Einträge sind aber alle von 2008/09...
Woran kann das liegen?
LG
MichiM
Anzeige
AW: vba - Max-Wert mit Bedingung
28.06.2009 14:25:05
Hajo_Zi
Hallo Michi,
ja, ich würde aber noch eine Prüfung machen ""
Ich sehe Deine Datei nicht. Mal im Einzelschritt testen. Wenn es Daten sind Definiere die variable als Date.
Gruß Hajo
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Maximalwert mit Bedingung in Excel VBA ermitteln


Schritt-für-Schritt-Anleitung

Um den maximalen Wert in einer Excel-Tabelle mit einer Bedingung zu ermitteln, kannst Du die folgende VBA-Prozedur verwenden. In diesem Beispiel gehen wir davon aus, dass Du den maximalen Wert in Spalte B (z. B. Arbeitsstunden) basierend auf einer Bedingung in Spalte G (z. B. Projekt) suchen möchtest.

  1. Öffne den VBA-Editor (drücke ALT + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Public Sub LetzterEintrag()
    Dim LetzteZeileStd As Long
    Dim iZeile As Long
    Dim LoWert As Long
    Dim varLetzterEintrag As Variant

    With Worksheets("ZS_Stunden")
        LetzteZeileStd = .Range("A65536").End(xlUp).Row
        LoWert = 0 ' Setze den Startwert auf 0, um den höchsten Wert zu finden.

        For iZeile = 4 To LetzteZeileStd
            If .Cells(iZeile, 7).Value = uf_projekte.cbo_projekt_auswahl Then
                If .Cells(iZeile, 2).Value > LoWert Then
                    LoWert = .Cells(iZeile, 2).Value
                End If
            End If
        Next iZeile
    End With

    uf_projekte.text_LetzterEintrag.Caption = Format(LoWert, "dd.mm.yyyy")
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, um den maximalen Wert anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler: "30.12.1899" als Ergebnis
    Lösung: Stelle sicher, dass die Zellen in Spalte B als Datum formatiert sind. Wenn Du mit Zahlen arbeitest, prüfe, ob die Zellen korrekt formatiert sind.

  • Fehler: Der MAX-Wert wird nicht korrekt angezeigt
    Lösung: Überprüfe die Bedingungen in Deiner If-Anweisung. Stelle sicher, dass der Vergleich mit uf_projekte.cbo_projekt_auswahl korrekt ist.


Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch eine Array-Formel nutzen, um den maximalen Wert mit einer Bedingung zu finden:

  1. Wähle eine Zelle aus, in der das Ergebnis angezeigt werden soll.
  2. Gib die folgende Formel ein und drücke Strg + Umschalt + Enter:
=MAX(WENN(G1:G10="aus uf_projekte.cbo_projekt_auswahl";B1:B10))

Diese Formel gibt den höchsten Wert in Spalte B zurück, wenn die Bedingung in Spalte G erfüllt ist.


Praktische Beispiele

Angenommen, Du hast folgende Daten in Deinem Arbeitsblatt "ZS_Stunden":

B (Werte) G (Projekte)
1 aus uf_projekte.cbo_projekt_auswahl
2 aus uf_projekte.cbo_projekt_auswahl
3 aus uf_projekte.cbo_projekt_auswahl
45
56
4 aus uf_projekte.cbo_projekt_auswahl
9

Die oben genannte VBA-Prozedur oder die Array-Formel würde den maximalen Wert 3, basierend auf der Bedingung, zurückgeben.


Tipps für Profis

  • Verwende die Application.Max-Funktion, um den maximalen Wert in einer Zeile oder Spalte effizient zu ermitteln.
  • Bei komplexeren Bedingungen kannst Du die Filter-Methode nutzen, um die Daten vor der Auswertung zu filtern.
  • Achte darauf, dass Deine Daten in der richtigen Formatierung vorliegen, um unerwartete Ergebnisse zu vermeiden.

FAQ: Häufige Fragen

1. Welche Excel-Version benötige ich für die Verwendung von VBA?
Du benötigst mindestens Excel 2007 oder höher, um VBA-Makros zu verwenden.

2. Kann ich auch mehrere Bedingungen einfügen?
Ja, Du kannst zusätzliche If-Anweisungen innerhalb der Schleife hinzufügen, um mehrere Bedingungen zu prüfen.

3. Was ist der Unterschied zwischen MAX und MAXWENN?
MAX gibt den höchsten Wert einer Liste zurück, während MAXWENN den höchsten Wert basierend auf einer bestimmten Bedingung zurückgibt.

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