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

Forumthread: MAX-Abfrage in einer Tabelle über VBA

MAX-Abfrage in einer Tabelle über VBA
14.10.2004 19:53:31
Chris
In einer Tabelle ist eine bestimmte Anzahl von zweidimensionalen Punkten eigetragen und ich möchte mit Hilfe von VBA genau diese Anzahl herausfinden, da ich mit dem Anzahlwert weiterrechnen möchte. Ist der folgende Befehl gut dafür geeignet, oder geht es besser?
Application.WorksheetFunction.Max(Worksheets("Tabelle1").Range("A2:A65536"))
So sieht die Tabelle aus:
1.Spalte: Punktnummer
2.Spalte: x-Koordinate
3. Spalte y-Koordinate
Nebenbei: Da die Anzahl von Punkten, die eingetragen sein können, variabel ist, habe ich den Bereich bis zu der von mir herausgefundenen maximalen Excel-Zeilenanzahl von 65536 aufgespannt. Ist das wirklich die maximale Zeilengrenze? Kann man das eleganter schreiben? Z. B. "A2:Aunendlich", oder so?
Später möchte ich einen Array definieren, der alle x-Koordinaten der Punkte enthält. Wenn ich aber bei der Array-Dimensionierung den Wert, den ich bei "Application.WorksheetFunction.Max(Worksheets("Tabelle1").Range("A1:A65536"))" herausbekommen habe, eingebe, bekomme ich eine Fehlermeldung, dass der Wert nicht konstant ist!?!
Danke für die Hilfe und Tipps!!!
Chris
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MAX-Abfrage in einer Tabelle über VBA
RALF
Moin,
wenn in Spalte 1 die Punktnummer steht, wo ist dann das Problem der Bereichsdefinition?
Wenn in der ersten Zelle (A1) ein String steht, dann wird der von der Formel "Max" ignoriert. Also
WorksheetFunction.Max(Worksheets("Tabelle1").Range("A:A"))
Viel Glück...
Gruß RALF
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

MAX-Abfrage in einer Tabelle über VBA


Schritt-für-Schritt-Anleitung

Um die maximale Anzahl von Werten in einer Excel-Tabelle über VBA zu ermitteln, kannst Du die Application.WorksheetFunction.Max-Funktion verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

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

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.

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

    Sub MaxWertErmitteln()
        Dim maxWert As Double
        maxWert = Application.WorksheetFunction.Max(Worksheets("Tabelle1").Range("A:A"))
        MsgBox "Der maximale Wert ist: " & maxWert
    End Sub
  4. Führe das Makro aus: Schließe den Editor und führe das Makro über Entwicklertools > Makros aus.

Damit erhältst Du den maximalen Wert aus der gesamten Spalte A in "Tabelle1".


Häufige Fehler und Lösungen

Problem: Fehlermeldung "Der Wert ist nicht konstant".

Lösung: Wenn Du versuchst, den Wert von Application.WorksheetFunction.Max direkt zur Dimensionierung eines Arrays zu verwenden, funktioniert das nicht. Stattdessen solltest Du den Maximalwert in einer Variablen speichern und dann das Array definieren. Beispiel:

Dim maxPunkte As Long
maxPunkte = Application.WorksheetFunction.Max(Worksheets("Tabelle1").Range("A:A"))
Dim xKoordinaten() As Double
ReDim xKoordinaten(1 To maxPunkte)

Alternative Methoden

Es gibt mehrere Wege, um den maximalen Wert in einer Excel-Tabelle zu ermitteln, darunter:

  • VBA Application.Max: Verwende Application.Max, um den Maximalwert über ein Array zu berechnen. Beispiel:

    Dim maxWert As Double
    maxWert = Application.Max(Array(1, 5, 3, 9, 2))
  • Direkte Excel-Funktion: Du kannst auch in eine Zelle die Formel =MAX(A:A) einfügen.


Praktische Beispiele

Wenn Du eine Tabelle hast, in der die Punktnummern in Spalte A und die x-Koordinaten in Spalte B stehen, kannst Du mit folgendem VBA-Code alle x-Koordinaten in ein Array einfügen:

Sub KoordinatenArray()
    Dim maxPunkte As Long
    maxPunkte = Application.WorksheetFunction.Max(Worksheets("Tabelle1").Range("A:A"))
    Dim xKoordinaten() As Double
    ReDim xKoordinaten(1 To maxPunkte)

    Dim i As Long
    For i = 1 To maxPunkte
        xKoordinaten(i) = Worksheets("Tabelle1").Cells(i + 1, 2).Value ' Spalte B für x-Koordinaten
    Next i
End Sub

Tipps für Profis

  • Verwende dynamische Bereiche: Setze ListObject oder Table ein, um die Bereiche dynamisch zu gestalten. So kannst Du sicherstellen, dass nur relevante Daten berücksichtigt werden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in Deinem Code, um unerwartete Eingaben abzufangen.

On Error Resume Next
' Dein Code hier
On Error GoTo 0

FAQ: Häufige Fragen

1. Kann ich auch andere Spalten mit der MAX-Funktion abfragen? Ja, Du kannst die MAX-Funktion auf jede beliebige Spalte anwenden, indem Du den entsprechenden Bereich im Code änderst, z.B. Range("B:B").

2. Was ist der Unterschied zwischen Application.WorksheetFunction.Max und Application.Max? Application.WorksheetFunction.Max ist eine Excel-Funktion, die in VBA verwendet wird, während Application.Max eine native VBA-Funktion ist, die auf Arrays angewendet wird.

3. Wie kann ich die MAX-Abfrage in einer Tabelle für mehrere Spalten durchführen? Du kannst die Werte mehrerer Spalten in ein Array einspeisen und dann Application.Max verwenden, um den maximalen Wert zu ermitteln.

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