Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

2Dimensionales Array sortieren

2Dimensionales Array sortieren
jowe
Hallo,
habe gerade viele Beiträge zum Thema gelesen - leider habe ich bislang für meine Frage keine Lösung gefunden oder die gefundenen Lösungen nicht für mich umsetzen können oder vielleicht auch nicht verstanden. Daher brauch ich jetzt mal Eure Hilfe: Meine Tabelle enthält in einer beliebigen Zeile eine beliebige Anzahl von unsortierten Tagesdaten, z.B. '18.07.2010'. In der direkt darunter befindlichen Zeile befindet sich für jedes Datum eine Zeitspanne, z.B. '07:00 - 14:00'. Ich möchte diese Datenpaare in eine 2-dimensionales Array einlesen, sortien und in den Originalbereich zurückschreiben. Ich möchte keine temporäre Tabelle benutzen.
Hier mal eine kleine Beispieltabelle mit nur 4 Datenpaaren
Tabelle1

 ABCD
118.07.201012.09.201016.03.201006.02.2010
207:00 - 14:0014:00 - 22:0022:00 - 07:0015:00 - 22:30


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß
Jochen

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: 2Dimensionales Array sortieren
18.07.2010 19:47:48
Klaus-Dieter
Hallo Jochen,
das kannst du doch mit der Standard Sortierfunktion von Excel machen. Daten / Sortieren / Optionen / nach Spalten sortieren.
Viele Grüße Klaus-Dieter

Online-Excel
AW: 2Dimensionales Array sortieren
18.07.2010 19:59:58
jowe
Hallo Klaus-Dieter,
danke für Deine Antwort. Das würde ich ja machen- aber die Menschen die's letzlich machen sollen, bringen mir immer alles durcheinander. Daher die Ide mit dem Makro, welches die Wertepaare ausliest, sortiert und wieder zurückschreibt.
Gruß
Jochen
Anzeige
AW: 2Dimensionales Array sortieren
19.07.2010 12:29:56
Klaus
Hallo Jochen,
schmeiss den Makrorekorder an, benutze einmal die Standard Sortierfunktion von Excel, Makrorekorder wieder aus. Du erhälst ein Makro, dass genau macht was du möchtest. Eventuell nochmal per Hand drüber gehen und die selects rausschmeißen, das wär dann aber schon nur fürs Gewissen.
Wozu das Rad nochmal erfinden?
Grüße,
Klaus M.vdT.
Das ist zweifelhaft, ob die StddMETHODE...
19.07.2010 14:13:40
Luc:-?
…genau das macht, was er will, Klaus…!?
Die sortiert ja alles, auch die Zell-Formate u. -formeln. Das ist nicht immer wünschenswert…
Hallo Jochen,
im alten Spotlight-Forum (Off-Line!) findest du gleich auf der 1.XL-Seite einen „Monolog“ zu Sortierfktt.
Gruß Luc :-?
Anzeige
@ Luc, was ist ...
20.07.2010 09:29:35
Klaus-Dieter
Hallo Luc,
... eine Stunden-dMethode?
Viele Grüße Klaus-Dieter

Online-Excel
Richtig erkannt! Da beißt sich meine übliche...
20.07.2010 17:37:15
Luc:-?
…wissenschaftl Plural-Abk-Methode mit meiner Abkz von Standard, Klaus-Dieter… ;-)
Muss ich mir mal was einfallen lassen…
Gruß Luc :-?
AW: 2Dimensionales Array sortieren
19.07.2010 22:23:35
Klaus-Dieter
Hallo Jochen,
versuche es einmal damit:
Modul Modul1 Option Explicit Sub sort() Range(Cells(1, 1), Cells(2, leSpalte)).sort Key1:=Range("A1"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _ DataOption1:=xlSortNormal End Sub Function leSpalte() As Integer leSpalte = CInt(Range(Range("A:IV").Find(What:="*", After:=Range("IV1"), _ LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious).Address).Column) End Function
[size=8]Code eingefügt mit [url=http://vbahtml.origo.ethz.ch] VBA in HTML 2.0.0.3[/url][/size]
Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: 2Dimensionales Array sortieren
20.07.2010 14:36:12
JOWE
Hallo an alle die geantwortet hatten.
Ich habe es jetzt mit einem Bubblesort gelöst:
Option Explicit
Option Base
Private Sub sorter(arrayName)
Dim i, j, t, y, condition1, sortColumn
sortColumn = 1
For i = LBound(arrayName, 1) To UBound(arrayName, 1) - 1
For j = LBound(arrayName, 1) To UBound(arrayName, 1) - 1
condition1 = CDate(arrayName(j, sortColumn)) > CDate(arrayName(j + 1, sortColumn))
If condition1 Then
For y = LBound(arrayName, 2) To UBound(arrayName, 2)
t = arrayName(j, y)
arrayName(j, y) = arrayName(j + 1, y)
arrayName(j + 1, y) = t
Next y
End If
Next
Next
End Sub

Private Sub zweidimensionales_Array()
Dim myArr() As String
Dim ze, sp, Spalte, Zeile, z As Long
Dim sh1 As Worksheet
Set sh1 = Sheets("Tabelle1")
'höchste Spaltennr der Daten ermitteln
sp = sh1.Cells(1, sh1.Columns.Count).End(xlToLeft).Column
ReDim myArr(sp, 2)
'Daten ins Array schreiben
For Spalte = 1 To sp
For Zeile = 1 To 2
myArr(Spalte, Zeile) = Cells(Zeile, Spalte)
Next
Next
'Sortierroutine aufrufen, Arraynamen übergeben
Call sorter(myArr)
'Daten zurück in Tabelle schreiben
'für Demozwecke in Zeile 4 und 5
For sp = LBound(myArr) To UBound(myArr)
z = z + 1
sh1.Cells(5, z) = CDate(myArr(z, 1))
sh1.Cells(6, z) = myArr(z, 2)
Next
'Array leeren
Erase myArr
End Sub
Mein Dank gilt Euch allen für die Mühen und
für den Bubblesort besanders an: http://excelwiki.com/vba-arrays/bubble-sort-in-vba
Gruß
Jochen
Anzeige

48 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige