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

Forumthread: 2-dimensionales Array sortieren

2-dimensionales Array sortieren
30.08.2007 11:54:00
Peter
Hallo zusammen,
zum Thema "Sortieren eines 2-dimensionalen Arrays" habe ich eine Frage, die das übersteigt, was ich bislang in der Recherche gefunden habe.
Ich kenne das Makro von Nepomuk (www.online-excel.de/excel/singsel_vba.php?f=97) und nutze es auch oft. Nun habe ich ein Array in dessen einer Spalte Long-Werte stehen nach denen ich das gesamte Array sortieren möchte (Koordinaten). Da das Array als Variant angelegt ist gelingt das nicht (die Long-Werte werden nicht in aufsteigender Zahl-Reihenfolge sortiert, sondern textuell). Da andere Spalten das Arrays nicht aus Long-Werten bestehen, kann ich auch nicht weg vom Variant-Array.
Habt Ihr eine Idee, wie ich das Array nach meiner Long-Spalte sortieren kann?
Das wäre eine Super-Hilfe.
Vielen Dank schon mal für Eure Beschäftigung mit der Herausforderung.
Viele Grüße
Peter

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2-dimensionales Array sortieren
30.08.2007 11:59:00
Renee
Hi Peter,
Welche Dimensionen hat Dein array im maximum?
Renee

AW: 2-dimensionales Array sortieren
30.08.2007 12:12:19
Renee
Hallo Peter,
Folgender Test-Code funktioniert wunderbar, mit Nepumuks Code:

Public Sub prcTest()
Dim intColumn As Integer
Dim lngRow As Long
Dim vntArray(1 To 1000, 1 To 2) As Variant
Dim vntSortArray As Variant
'die zu sortierenden Spalten
'negative Zahl = Spalte absteigend sortieren
'positive Zahl = Spalte aufsteigend sortieren
vntSortArray = Array(1, 0)
'TestArray füllen
Randomize Timer
For lngRow = 1 To 1000
vntArray(lngRow, 1) = (10 ^ 20 * Rnd) + 1
vntArray(lngRow, 2) = Chr(Fix((26 * Rnd) + 64)) & Chr(Fix((26 * Rnd) + 64))
Next
'Sortierroutine starten
Call prcSort(vntSortArray, vntArray())
'Ausgabe Testarray
Application.ScreenUpdating = False
Range("A1:B1000").Value = vntArray
Application.ScreenUpdating = True
End Sub


Greetz Renee

Anzeige
AW: 2-dimensionales Array sortieren
30.08.2007 12:59:03
Peter
Hallo Renee,
vielen Dank für Deine Antwort.
Mein Array hat 10 Spalten und soviele Zeilen, dass sie nicht in eine Tabelle passen (die Anzahl schwankt zwischen 80000 und 150000).
Ich werde Deinen Code direkt mal ausprobieren und sag' dann Bescheid.
Viele Grüße
Peter

Anzeige
AW: 2-dimensionales Array sortieren
30.08.2007 13:13:00
Peter
Hallo Renee,
hier kommt die positive Rückmeldung ... :-)
Ich hab's gerade ausprobiert - und es hat perfekt funktioniert.
Was auch immer ich den letzten Stunden "falsch" gemacht habe. Jetzt klappts.
Vielen Dank für Deine Hilfe und herzliche Grüße
Peter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

2-dimensionales Array in Excel sortieren


Schritt-für-Schritt-Anleitung

Um ein 2-dimensionales Array in Excel VBA zu sortieren, kannst Du den folgenden Code verwenden. Dieser Code sortiert das Array basierend auf den Werten einer bestimmten Spalte.

  1. Öffne den VBA-Editor in Excel (drücke ALT + F11).
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Public Sub prcTest()
    Dim intColumn As Integer
    Dim lngRow As Long
    Dim vntArray(1 To 1000, 1 To 2) As Variant
    Dim vntSortArray As Variant
    'die zu sortierenden Spalten
    'negative Zahl = Spalte absteigend sortieren
    'positive Zahl = Spalte aufsteigend sortieren
    vntSortArray = Array(1, 0) ' Sortiere nach der ersten Spalte aufsteigend
    'TestArray füllen
    Randomize Timer
    For lngRow = 1 To 1000
        vntArray(lngRow, 1) = (10 ^ 20 * Rnd) + 1
        vntArray(lngRow, 2) = Chr(Fix((26 * Rnd) + 64)) & Chr(Fix((26 * Rnd) + 64))
    Next
    'Sortierroutine starten
    Call prcSort(vntSortArray, vntArray())
    'Ausgabe Testarray
    Application.ScreenUpdating = False
    Range("A1:B1000").Value = vntArray
    Application.ScreenUpdating = True
End Sub
  1. Führe das Makro aus (F5), um das Array zu generieren und zu sortieren.

Häufige Fehler und Lösungen

  • Problem: Das Array wird nicht korrekt sortiert.

    • Lösung: Stelle sicher, dass die Werte im Array, die Du sortieren möchtest, die richtigen Datentypen haben. Long-Werte sollten immer als Long deklariert sein, um sicherzustellen, dass sie numerisch und nicht textuell sortiert werden.
  • Problem: Array ist zu groß für die Excel-Tabelle.

    • Lösung: Überprüfe die Anzahl der Zeilen und Spalten. Excel hat eine maximale Anzahl an Zeilen (1.048.576 in neueren Versionen), die Du bei der Arbeit mit großen Arrays berücksichtigen musst.

Alternative Methoden

Eine alternative Methode zum Sortieren eines 2-dimensionalen Arrays ist die Verwendung von Excel-Funktionen wie SORT in Excel 365. Diese Funktion kann direkt auf einen Bereich angewendet werden, wenn das Array als Bereich in einer Excel-Tabelle vorliegt.

Für VBA gibt es auch die Möglichkeit, eine eigene Sortierfunktion zu schreiben oder externe Bibliotheken zu verwenden, um die Sortierung zu optimieren.


Praktische Beispiele

Hier ist ein praktisches Beispiel zur Verwendung eines 2-dimensionalen Arrays mit 10 Spalten und variablen Zeilen:

Dim myArray(1 To 150000, 1 To 10) As Variant
' Hier kannst Du den Array mit Werten füllen und anschließend sortieren

Das Sortieren eines großen Arrays kann helfen, Daten besser zu analysieren und zu präsentieren.


Tipps für Profis

  • Nutze Variant nur, wenn es unbedingt notwendig ist. Wenn Du mit spezifischen Datentypen arbeitest, kann das die Performance und Lesbarkeit Deines Codes verbessern.
  • Verwende die Application.ScreenUpdating-Eigenschaft, um die Bildschirmaktualisierung während der Makroausführung zu deaktivieren, was die Ausführungsgeschwindigkeit erhöht.
  • Für sehr große Arrays kann es sinnvoll sein, das Array in kleinere Teile zu zerlegen und diese einzeln zu sortieren, um den Speicherverbrauch zu optimieren.

FAQ: Häufige Fragen

1. Frage: Wie kann ich ein Array mit mehr als 2 Dimensionen sortieren?
Antwort: Du kannst eine rekursive Sortierfunktion implementieren, die auch für mehrdimensionale Arrays funktioniert, jedoch ist dies komplexer und erfordert ein gutes Verständnis von VBA.

2. Frage: Gibt es eine Möglichkeit, Arrays in PHP zu sortieren?
Antwort: Ja, PHP bietet zahlreiche Funktionen wie sort() und usort(), die verwendet werden können, um Arrays zu sortieren. Diese Funktionen sind jedoch spezifisch für PHP und nicht direkt auf Excel anwendbar.

3. Frage: Wie kann ich sicherstellen, dass mein Array immer die korrekten Datenformatierungen hat?
Antwort: Achte darauf, beim Befüllen des Arrays die Datentypen explizit zu definieren. Eine Überprüfung vor der Sortierung kann helfen, Probleme zu vermeiden.

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