Hallo David,
das erste:kann man irgendwie die häuser sortieren haus1 2 3…
weil diese durcheinander angezeigt werden
wenn es also doch auch daruf hinaus läuft hättest du dir auch mal den Code von Reinhard ansehen können. (Wenigstens ein kurzes Feedback und Danke an ihn wäre vieleich auch nett gewesen…)
Mann könnte das mit dem Sortieren jetzt natürlich auch „von Hand“ machen, mit einem zweiten Array:
Die Anfangsbuchstaben miteinander vergleichen
(If Asc(LCase(Left(Wert1,1))) Sortieren…)
Sie ist folgendermaßen definiert:
Range(Cell1, [Cell2]).Sort([Key1], [Order1 As XlSortOrder = xlAscending], [Key2], [Type], [Order2 As XlSortOrder = xlAscending], [Key3], [Order3 As XlSortOrder = xlAscending], [Header As XlYesNoGuess = xlNo], [OrderCustom], [MatchCase], [Orientation As XlSortOrientation = xlSortRows], [SortMethod As XlSortMethod = xlPinYin])
In deinem Fall geht das dann folgendermaßen:
Sheets(2).Activate 'Unbedingt schon vor ".Sort" sonst wird ein Fehler ausgegeben.
'Die Häuser sortieren:
Sheets(2).Range("B1", Sheets(2).Cells(MaxRow2, lColumn)).Sort \_
Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, \_
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
'Die Gegenstände sortieren:
Sheets(2).Range("A2", Sheets(2).Cells(MaxRow2, lColumn)).Sort \_
Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, \_
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
das zweite: habe die häuser jetzt waagerecht und die
gegenstände senkrecht und möchte diese jedem haus zuordnen.
Hier musst du dann für die Spalten auch eine Variable einsetzen.
Außerdem musst du jedes mal prüfen ob der Gegenstand schon in einem anderen Haus vorkam und ihn, falls nicht, zur Liste hinzufügen:
lColumn = 2
MaxRow2 = 1
For HausNr = 1 To MaxRow
If ArrSort(HausNr, 0, 0) = "" Then Exit For
Sheets(2).Cells(1, lColumn) = ArrSort(HausNr, 0, 0)
For GegNr = 1 To MaxRow
If ArrSort(HausNr, GegNr, 0) = "" Then Exit For
For lRow = 2 To MaxRow2 + 1
If lRow = MaxRow2 + 1 Then 'Gegenstand zur Liste hinzufügen
Sheets(2).Cells(lRow, 1) = ArrSort(HausNr, GegNr, 0)
Sheets(2).Cells(lRow, lColumn) = ArrSort(HausNr, GegNr, 1)
MaxRow2 = MaxRow2 + 1
Exit For
End If
If Sheets(2).Cells(lRow, 1) = ArrSort(HausNr, GegNr, 0) Then
'Gegenstand ist schon in Liste -\> nur Wert eintragen
Sheets(2).Cells(lRow, lColumn) = ArrSort(HausNr, GegNr, 1)
Exit For
End If
Next lRow
Next GegNr
lColumn = lColumn + 1
Next HausNr
Kleiner Hinweis um Verwirrung zu vermeiden:
Im Code kommt dann natürlich erst die Antwort auf Frage 2 und dannach die zu Frage 1, also erst in das Sheet schreiben, dann sortieren.
Habe die Datei aktualisiert:
http://mitglied.lycos.de/rpgworld/Sortieren2.xls
(Rechtsklick->Ziel speichern unter… sonst geht es gleich im Browser auf!)
Gruß Phil
[MOD] Tippfehler korrigiert