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

Forumthread: Minimum in Array finden

Minimum in Array finden
14.12.2016 14:08:25
Hendrik
Hallo zusammen,
ich möchte in einem mehrdimensionalen Array den Minimalen Wert finden. Dieser kann sowohl größer als auch kleiner als 0 sein.
Mit
For i = 0 To UBound(glStrArr)
if glStrArr(i,2) 

komme ich (bspw. beim Array 7,8,9,10) ja nicht weiter, da Initial eine 0 in lngMin steht. Wie würdet Ihr das möglichst perfomant (Array ist bis zu 10.000 Zeilen lang) gestalten?
Danke und Grüße
Hendrik
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Minimum in Array finden
14.12.2016 14:22:09
Daniel
Hi
verwende einfach den ersten Wert des Arrays als Startwert für lngMin
lngMin = glStrArr(0, 2)
For i = 1 To UBound(glStrArr)
if glStrArr(i,2) 
oder verwende einen sehr großen Zahl als Startwert, der Wert muss größer sein als der Kleinste Wert im Array.
beim Typ Long nimmst du lngMin = 2^32-1
beim Typ Double nimmst du lngMin = 10^308
Gruß Daniel
Anzeige
AW: Minimum in Array finden
15.12.2016 11:03:03
Hendrik
Hallo Daniel,
danke für die Hilfe.
der erste Wert ist in dem unsortierten Array keine Hilfe.
Bei

Dim lngMin As LonglngMin = 2 ^ 32 - 1

bekomme ich einen Überlauf.
Grüße
AW: Minimum in Array finden
15.12.2016 12:06:19
Daniel
der erst Wert ist nur dann keine Hilfe, wenn er keine Zahl sondern ein Text oder "leer" ist.
Sobald de erste Wert eine Zahl ist, der in die MIN-Berechnung eingeht, kannst du diesen verwenden.
Die Sortierung spielt jedoch keine Rolle.
Für die Min-Ermittlung kannst du als Startwert jeden Wert verwenden, der größer oder gleich dem tatsächlichen Min im Array ist, dh du kannst jeden Wert aus dem Array nehmen.
Ansonsten ist die Obergrenze für den Typ Long 2^31-1
(der Typ hat einen Zahlenraum von 2^32 (32bit), aber die eine Hälfte ist ja für die negativen Zahlen reserviert, daher 2^31-1 als größten Positiven Wert.
Gruß Daniel
gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Minimalen Wert in einem mehrdimensionalen Array finden


Schritt-für-Schritt-Anleitung

Um den minimalen Wert in einem mehrdimensionalen Array zu finden, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Initialisierung des Minimalwerts: Setze den Startwert für lngMin. Du kannst entweder den ersten Wert des Arrays oder einen sehr hohen Wert verwenden, um einen Überlauf zu vermeiden.

    Dim lngMin As Long
    lngMin = 2 ^ 31 - 1 ' Höchster Wert für Long
  2. Durchlauf des Arrays: Verwende eine Schleife, um durch die Elemente des Arrays zu iterieren.

    For i = 0 To UBound(glStrArr)
       If glStrArr(i, 2) < lngMin Then
           lngMin = glStrArr(i, 2)
       End If
    Next i
  3. Ergebnis ausgeben: Nachdem die Schleife abgeschlossen ist, enthält lngMin den minimalen Wert des Arrays.


Häufige Fehler und Lösungen

Fehler 1: Überlauf beim Setzen des Startwerts.

  • Lösung: Stelle sicher, dass Du den maximalen Wert für den Datentyp verwendest, in diesem Fall 2 ^ 31 - 1 für Long.

Fehler 2: Der erste Wert im Array ist kein numerischer Wert.

  • Lösung: Überprüfe den Datentyp des ersten Wertes. Der erste Wert sollte eine Zahl sein, um ihn als Startwert verwenden zu können.

Alternative Methoden

Es gibt verschiedene Methoden, um den minimalen Wert in einem Array zu finden:

  1. Verwendung einer Excel-Funktion: Wenn Du die Daten in einem Excel-Blatt hast, kannst Du die MIN-Funktion verwenden:

    =MIN(A1:A10000)
  2. Nutzung von Collections: Eine Collection kann verwendet werden, um die Werte zu speichern und dann den minimalen Wert zu finden.


Praktische Beispiele

Angenommen, Du hast ein mehrdimensionales Array mit den folgenden Werten:

Dim glStrArr(0 To 2, 0 To 2) As Long
glStrArr(0, 2) = 10
glStrArr(1, 2) = 5
glStrArr(2, 2) = 15

Verwende die oben genannte Methode, um den minimalen Wert zu finden:

Dim lngMin As Long
lngMin = 2 ^ 31 - 1

For i = 0 To UBound(glStrArr)
    If glStrArr(i, 2) < lngMin Then
        lngMin = glStrArr(i, 2)
    End If
Next i

Debug.Print lngMin ' Ausgabe: 5

Tipps für Profis

  • Performance optimieren: Bei großen Arrays (bis zu 10.000 Zeilen) kann es hilfreich sein, eine temporäre Variable für den Minimalwert zu verwenden, um die Berechnung zu optimieren.

  • Datenvalidierung: Stelle sicher, dass alle Werte im Array numerisch sind, um Fehler während der Berechnung zu vermeiden.

  • Flexibilität: Wenn du mit anderen Datentypen arbeitest, wie z.B. Double, passe den Startwert entsprechend an (lngMin = 10 ^ 308).


FAQ: Häufige Fragen

1. Wie kann ich den minimalen Wert in einem Array mit Textwerten finden? Es ist nicht möglich, einen minimalen Wert aus Textwerten zu finden, da die MIN-Funktion nur mit numerischen Werten arbeitet. Stelle sicher, dass das Array nur Zahlen enthält.

2. Was ist der Unterschied zwischen Long und Double in Bezug auf den Minimalwert? Der Datentyp Long hat einen spezifischen Zahlenbereich, während Double eine größere Anzahl an Dezimalstellen und einen größeren Zahlenbereich hat. Achte darauf, den richtigen Typ basierend auf deinen Daten auszuwählen.

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