Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Max Wert per VBA

Max Wert per VBA
Gregor
Hallo
Siehe Musterdatei
https://www.herber.de/bbs/user/73978.xls
Auf dieser Liste möchte ich in Spalte F für alle Zeilen den max Wert übertragen, der aus den Werten Zeile A, in den Spalten je Linie mit einem x gekennzeichnet, hervorgeht. Das heisst, es muss je zeile von allen mit x gekennzeichneten Werten den grössten Wert in Spalte F übertragen werden. Dabei handelt es sich um eine längere Liste. Wie kann ich das per VBA machen.
Vielen Dank und Gruss
Gregor
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Max Wert per VBA
16.03.2011 10:11:21
Martin
Hallo Gregor,
hier die Lösung:
Sub Max()
Dim j As Integer, i As Integer
Dim MaxWert As Integer
For j = 3 To ActiveSheet.UsedRange.Rows.Count
For i = 8 To 32
If Cells(j, i) = "x" Then
If Cells(2, i) > MaxWert Then MaxWert = Cells(2, i)
End If
Next i
Cells(j, 6) = MaxWert
MaxWert = 0
Next
End Sub
Viele Grüße
Martin
Anzeige
AW: Max Wert per VBA
16.03.2011 11:27:03
Gregor
Hoi Martin
Sehr gut, vielen Dank für die Unterstützung.
Gruss Gregor
Bedingtes Maximum mit VBA
16.03.2011 10:38:24
Erich
Hi Gregor,
hier noch eine Alternative ohne Schleife (dürfte etwas schneller laufen):

Sub myMax2()
Dim lngZ As Long
lngZ = Cells(Rows.Count, 1).End(xlUp).Row - 3
Cells(3, 6).FormulaArray = "=MAX(H$2:AF$2*(H3:AF3=""x""))"
Cells(3, 6).Copy Cells(4, 6).Resize(lngZ)
With Cells(3, 6).Resize(lngZ + 1)
.Formula = .Value
End With
End Sub
@Martin:
Die Prozedur würde ich nicht Max() nennen - das ist u. A. der Name einer Excelfkt.
Und für Zeilennummern ist Long immer besser als Integer.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Bedingtes Maximum mit VBA
16.03.2011 10:47:37
Martin
Hallo Erich,
ja, das mit dem "Long" ist mir selbst aufgefallen, nachdem ich geantwortet hatte. Aber dennoch wird Integer mit bis zu 32.767 sicherlich ausreichen. Mit dem Prozedurnamen hast du auch recht, ich hatte an die Excel-Funktion nicht gedacht.
Viele Grüße
Martin
AW: Bedingtes Maximum mit VBA
16.03.2011 11:28:57
Gregor
Hallo Erich
Auch dir besten Dank, funktioniert natürlich auch.
Gruss Gregor
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Max Wert per VBA in Excel


Schritt-für-Schritt-Anleitung

Um den maximalen Wert aus bestimmten Zellen in Excel per VBA zu extrahieren, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen. Diese Methode ist besonders nützlich, wenn du eine längere Liste hast und eine bestimmte Bedingung (wie ein "x") erfüllen musst.

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf "Einfügen" und wähle "Modul", um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub Max()
       Dim j As Integer, i As Integer
       Dim MaxWert As Integer
    
       For j = 3 To ActiveSheet.UsedRange.Rows.Count
           For i = 8 To 32
               If Cells(j, i) = "x" Then
                   If Cells(2, i) > MaxWert Then MaxWert = Cells(2, i)
               End If
           Next i
           Cells(j, 6) = MaxWert
           MaxWert = 0
       Next
    End Sub
  4. Schließe den VBA-Editor und kehre zu deiner Excel-Tabelle zurück.

  5. Drücke ALT + F8, wähle "Max" aus und klicke auf "Ausführen".

Diese Methode verwendet eine Schleife, um die Zellen zu durchlaufen und den maximalen Wert zu bestimmen. Beachte, dass du die Zellenadressen im Code entsprechend deiner Daten anpassen musst.


Häufige Fehler und Lösungen

  • Fehler: "Typenkonflikt"
    Lösung: Stelle sicher, dass die Zellen, die du vergleichst, den richtigen Datentyp haben (z.B. Zahlen und nicht Text).

  • Fehler: MaxWert bleibt immer 0
    Lösung: Überprüfe, ob die Bedingung (If Cells(j, i) = "x") tatsächlich erfüllt ist und dass die Zellen in Zeile 2 gültige Werte enthalten.

  • Die Prozedur wird nicht ausgeführt
    Lösung: Stelle sicher, dass du das Makro korrekt gestartet hast (über ALT + F8).


Alternative Methoden

Eine alternative Methode, die ohne Schleifen auskommt und somit effizienter ist:

Sub myMax2()
    Dim lngZ As Long
    lngZ = Cells(Rows.Count, 1).End(xlUp).Row - 3
    Cells(3, 6).FormulaArray = "=MAX(H$2:AF$2*(H3:AF3=""x""))"
    Cells(3, 6).Copy Cells(4, 6).Resize(lngZ)
    With Cells(3, 6).Resize(lngZ + 1)
        .Formula = .Value
    End With
End Sub

Hierbei wird die Excel-Formel MAX verwendet, um das Maximum direkt über die Formel zu berechnen. Dies ist besonders nützlich, wenn du eine große Datenmenge hast.


Praktische Beispiele

Wenn du beispielsweise in Spalte A bis AF Werte hast und in Zeile 2 die Überschriften, kannst du den oben genannten VBA-Code verwenden, um das Maximum zu bestimmen. Angenommen, die "x"-Kennzeichnungen sind in den Zeilen 3 bis n, dann wird das Ergebnis in Spalte F angezeigt.


Tipps für Profis

  1. Verwende Long anstelle von Integer: In VBA ist es besser, den Datentyp Long zu verwenden, da er größere Werte speichern kann.

  2. Vermeide die Verwendung von reservierten Namen: Nenne deine Prozeduren nicht Max, da dies zu Verwirrung mit der Excel-Funktion führen kann.

  3. Setze Fehlerbehandlung ein: Implementiere eine einfache Fehlerbehandlung, um unerwartete Probleme zu identifizieren.


FAQ: Häufige Fragen

1. Wie kann ich den maximalen Wert einer bestimmten Spalte ermitteln?
Verwende dafür die Application.Max Funktion oder die MAX Excel-Funktion innerhalb eines VBA-Skripts.

2. Was ist der Unterschied zwischen Integer und Long in VBA?
Integer kann Werte von -32.768 bis 32.767 speichern, während Long Werte von -2.147.483.648 bis 2.147.483.647 speichern kann. Für größere Datenmengen ist Long die bessere Wahl.

3. Kann ich die Funktion auch für andere Datentypen verwenden?
Ja, du kannst die Logik anpassen, um mit verschiedenen Datentypen zu arbeiten, solange sie korrekt in den Zellen gespeichert sind.

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