Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
636to640
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
636to640
636to640
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten neu Sortieren

Daten neu Sortieren
20.07.2005 16:53:39
Kisselstein
Hallo Zusammen,
ich stehe gerade vor einem für mich großem Problem: Und zwar habe ich eine Tabelle mit sehr vielen Zeilen diese Zeilen sind leider wild durcheinander. Ich möchte nun , dass alle Zeilen in einem anderen Tabellenblatt automatisch in die richtige Reihenfolge gebracht werden. Und zwar nach folgendem Prinzip:
In der ersten spalte steht für jede Zeile eine Nummer (Nr.) und in der letzten Spalte Nachfolger) jeder Zeile sind diese Nummern der ersten spalte für die richtige Reihenfolge aufgelistet.
In dem neuen Tabellenblatt sollen dann anhand der Nummern in der letzten Spalte die entsprechenden Zeilen mit der Nummer aus der ersten Spalte untereinander sortiert werden.
Ich hab leider keinen blassen Schimmer wie ich da ran gehen soll
Gruß und Danke schonmal Wolfi
hier noch die Datei zum Beispiel:
https://www.herber.de/bbs/user/24852.xls
hier ein Beispiel
Tabelle1
 ABCDE
1NrNameTaktNachfolger 
21a103;4 
32b101 
43c104Ausgangslage
54d106 
65e102;4 
76f101 
8     
9     
10NrNameTaktNachfolger 
111a103;4 
123c104 
134d106 
142b101 
151a103;4 
163c104Zieltabelle
174d106 
184d106 
195e102;4 
202b101 
214d106 
226f101 
231a103;4 
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
https://www.herber.de/bbs/user/24852.xls

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten neu Sortieren
20.07.2005 22:55:59
Herbert
hallo Kisselstein,
probier das einmal:


Option Explicit
Public Sub Tab_erstellen()
Dim i%, x%, lz%
i = 2: lz = 11
[a11:d24].ClearContents
Do Until Cells(i, 1) = ""
  Cells(lz, 1) = Cells(i, 1)
    lz = Cells(Rows.Count, 1).End(xlUp).Row + 1
  Cells(lz, 1) = Left(Cells(i, 4), 1)
    lz = Cells(Rows.Count, 1).End(xlUp).Row + 1
  Cells(lz, 1) = Mid(Cells(i, 4), 3, 1)
    lz = Cells(Rows.Count, 1).End(xlUp).Row + 1
 i = i + 1
Loop
For x = 11 To lz
  Select Case Cells(x, 1)
     Case 1
       Cells(x, 2) = "a"
       Cells(x, 3) = 10
       Cells(x, 4) = "3,4"
       
    Case 2
       Cells(x, 2) = "b"
       Cells(x, 3) = 10
       Cells(x, 4) = 1
       
    Case 3
       Cells(x, 2) = "c"
       Cells(x, 3) = 10
       Cells(x, 4) = 4
       
    Case 4
       Cells(x, 2) = "d"
       Cells(x, 3) = 10
       Cells(x, 4) = 6
       
    Case 5
       Cells(x, 2) = "e"
       Cells(x, 3) = 10
       Cells(x, 4) = "2,4"
    
    Case 6
       Cells(x, 2) = "f"
       Cells(x, 3) = 10
       Cells(x, 4) = 1
       
  End Select
  
Next
End Sub

     
ist an deine Mustertabelle angepasst...
gruß Herbert
Anzeige
AW: Daten neu Sortieren
21.07.2005 00:26:35
Kisselstein
Hi Herbert,
vielen Dank für die Antwort. Werd ich morgen gleich mal ausprobieren.
Ich Denke Du hast mich auf jeden Fall ein Stück weiter gebracht. Allerdings kann ich das noch nicht ganz für meinen Fall anwenden da ich hunderte von Zeilen habe die sortiert werden müssen und dann müsste ich für jeden Fall ein Case definieren.
Geht das nich auch irgendwie das in der Spalte Nachfolger geschaut wird welche Zahlen vorhanden sind diese dann in der Spalte Nummer gesucht werden und wenn gefunden dann kopiere die komplette Zeile unter die Ausgangszeile usw.
Gruß und eine gute Nacht
Wolfi
Anzeige
AW: Daten neu Sortieren
21.07.2005 13:04:06
Herbert
hast Du es dann ausprobiert ?
wenn ja, macht es auf diese Mustertabelle angewandt,das was du willst,
oder nicht ?
gruß Herbert
AW: Daten neu Sortieren
21.07.2005 14:33:48
Herbert
so wird die Liste auf einem neuen Blatt erstellt:


Option Explicit
Public Sub Tab_erstellen()
Dim shQ As Worksheet, shZ As Worksheet
Set shQ = Sheets("Tabelle1")
Set shZ = Sheets("Tabelle2")
Dim i%, x%, lz%
i = 2
lz = shZ.Cells(Rows.Count, 1).End(xlUp).Row
shZ.Range("a2:d" & lz).ClearContents
Do Until shQ.Cells(i, 1) = ""
    lz = shZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
  shZ.Cells(lz, 1) = shQ.Cells(i, 1)
    lz = shZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
  shZ.Cells(lz, 1) = Left(shQ.Cells(i, 4), 1)
    lz = shZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
  shZ.Cells(lz, 1) = Mid(shQ.Cells(i, 4), 3, 1)
    lz = shZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
 i = i + 1
Loop
For x = 2 To lz
  Select Case Cells(x, 1)
     Case 1
       shZ.Cells(x, 2) = "a"
       shZ.Cells(x, 3) = 10
       shZ.Cells(x, 4) = "3,4"
       
    Case 2
       shZ.Cells(x, 2) = "b"
       shZ.Cells(x, 3) = 10
       shZ.Cells(x, 4) = 1
       
    Case 3
       shZ.Cells(x, 2) = "c"
       shZ.Cells(x, 3) = 10
       shZ.Cells(x, 4) = 4
       
    Case 4
       shZ.Cells(x, 2) = "d"
       shZ.Cells(x, 3) = 10
       shZ.Cells(x, 4) = 6
       
    Case 5
       shZ.Cells(x, 2) = "e"
       shZ.Cells(x, 3) = 10
       shZ.Cells(x, 4) = "2,4"
    
    Case 6
       shZ.Cells(x, 2) = "f"
       shZ.Cells(x, 3) = 10
       shZ.Cells(x, 4) = 1
       
  End Select
  
Next
End Sub

     
funktioniert allerdings nur,wenn wie in deiner Mustertabelle
zu allen Nummern in Spalte A in Spalte D immer die gleichen Zahlen stehen...
sonst mußt du zu Reinhard's Code greifen...
gruß Herbert
Anzeige
AW: Daten neu Sortieren
22.07.2005 07:57:52
Kisselstein
Hallo Herbert,
hab gestern Abend beide Lösungen versucht anzuwenden. Die von Reinhard passt besser für mein Problem. Aber trotzdem auch Dir vielen vielen Dank für die Unterstützung.
Gruß Wolfi
AW: Daten neu Sortieren
22.07.2005 09:04:06
Herbert
hallo Wolfi,
es gibt nicht "besser" oder "schlechter"...
entweder es passt oder es passt nicht...
das war von Haus aus eine Glaskugellösung...
mit einer Wahrscheinlichkeit von 95% daß es nicht passt...
gruß Herbert
AW: Daten neu Sortieren
21.07.2005 00:58:17
Reinhard
Hi X,
wenn deine Zeile 18 falsch ist, dann habe ich kapiert was du möchtest.
Gruß
Reinhard
AW: Daten neu Sortieren
21.07.2005 12:30:36
Kisselstein
Hi Reinhardt,
ups da hab ich wohl einen Fehler gemacht. Aber die Zeile 18 stimmt noch aber dann müsste noch eine Zeile eingefügt werden mit Nr. = 6, Name = f, Takt = 10, Nachfolger ist 1.
Was ich möchte ist: (sorry tuh mir wohl etwas schwer das verständlich zu beschreiben)
In der Spalte Nachfolger soll nachgeschaut werden welche Zahlen in der Zelle stehen( wenn mehrere dann sind sie mit Komma getrennt). Diese Zahlen sollen dann in der Spalte Nr. gesucht werden und dann die komplette Zeile in der die Nummer in Nr. vorhanden ist unter die Ausgangszeile kopiert werden. Am besten alles in einem weiteren Tabellenblatt.
Also:
Für Zeile 2 bedeutet das: in Nachfolger steht 3 und 4. Also suche in Spalte Nr. nach der Zeile wo 3 steht und kopiere diese unter die Ausgangszeile in einem neuen Tabellenblatt. Dann suche nach 4.
Dannach geht es wieder mit der nächsten Ausgangszeile weiter also Zeile 3. Also kopiere diese unter die Zeile mit der Nummer 4 und suche dann nach 1 in Nr. usw.
Gruß und Danke Wolfi
Anzeige
AW: Daten neu Sortieren
21.07.2005 13:40:31
Reinhard
Hi Wolfi,
m.E. ,müsste mein Code perfekt laufen, aber er hängt sich mit Fehler 1004 an dem "Match" auf. Und ich sehe nicht warum. Da ich vor tgaen schon das Gleiche mit "vlookup" hatte, mache ich wohl etwas falsch bei Worsheetfunctionen, leide k.A. was :-(
Ich stelle mal die Frage alu noch offen und hoffe einer hier löst das Problem in meinem Code.
Sub tt() Set ws1 = Worksheets("Tabelle1") Set ws2 = Worksheets("Tabelle2") zei = 1 ws1.Rows(1).Copy Destination:=ws2.Cells(zei, 1) With ws2 For n = 2 To ws1.Range("a65536").End(xlUp).Row zei = zei + 1 ws1.Rows(n).Copy Destination:=ws2.Cells(zei, 1) a = Split(ws1.Cells(n, 4), ";") For nn = 0 To UBound(a) zei = zei + 1 t = Application.WorksheetFunction.Match(a(nn), ws1.Columns(1), 0) ws1.Rows(t).Copy Destination:=ws2.Cells(zei, 1) Next nn Next n End With End Sub
Gruß
Reinhard
Anzeige
Lösung
21.07.2005 13:55:35
Reinhard
Hi Wolfi,
Sub tt() Set ws1 = Worksheets("Tabelle1") Set ws2 = Worksheets("Tabelle2") zei = 1 ws1.Rows(1).Copy Destination:=ws2.Cells(zei, 1) With ws2 For n = 2 To ws1.Range("a65536").End(xlUp).Row zei = zei + 1 ws1.Rows(n).Copy Destination:=ws2.Cells(zei, 1) a = Split(ws1.Cells(n, 4), ";") For nn = 0 To UBound(a) zei = zei + 1 t = Application.WorksheetFunction.Match(CInt(a(nn)), ws1.Columns(1), 0) ws1.Rows(t).Copy Destination:=ws2.Cells(zei, 1) Next nn Next n End With End Sub
Gruß
Reinhard
AW: Lösung
22.07.2005 07:56:35
Kisselstein
Hallo Reinhardt,
ja genau das ist es, das macht genau das was ich möchte. Vielen vielen Dank für die Lösung.
Eine kleine Frage noch was muss ich anpassen, wenn die Nr. Spalte nicht die erste Spalte ist sondern in der z.b. 2 Spalte ist.
Die Veränderung der Nachfolger Spalte hab ich gefunden: Split(ws1.Cells(n, 4), ";")
Gruß und Danke
Wolfi
Anzeige
AW: Lösung
22.07.2005 13:25:44
Reinhard
Hi Wolfi,
wenn sich die Spalten ändern, Cells hat die Syntax Cells(Zeile,Spalte)
und die Suchspalte für die Nr ist im Begriff "Columns(1)" angegeben.
Gruß
Reinhard
AW: Lösung
22.07.2005 15:18:11
Kisselstein
Hi Reinhard,
irgendwie hat das mit den Spalten nicht geklappt. Ich habe vor der Spalte Nr. eine weitere Spalte eingefügt (ist leer).
Dann hab ich Column(2) gesetzt und Split(ws1.Cells(n, 5), ";". Nun wir aber nur die Überschrift kopiert der Rest bleibt leer.
Hier das Beispiel: https://www.herber.de/bbs/user/24932.xls
Gruß Wolfi
AW: Lösung
22.07.2005 16:21:00
Reinhard
Hi Wolfi,
a65536 zu b65536 und Columns(1) zu Columns(2)

Sub tt()
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle2")
zei = 1
ws1.Rows(1).Copy Destination:=ws2.Cells(zei, 1)
With ws2
For n = 2 To ws1.Range("b65536").End(xlUp).Row
zei = zei + 1
ws1.Rows(n).Copy Destination:=ws2.Cells(zei, 1)
a = Split(ws1.Cells(n, 5), ";")
For nn = 0 To UBound(a)
zei = zei + 1
t = Application.WorksheetFunction.Match(CInt(a(nn)), ws1.Columns(2), 0)
ws1.Rows(t).Copy Destination:=ws2.Cells(zei, 1)
Next nn
Next n
End With
End Sub

Gruß
Reinhard
Anzeige
AW: Lösung
23.07.2005 12:11:26
Kisselstein
Hi Reinhard,
Ok das war`s jetzt klappt auch das.
Also vielen Dank für das Coaching.
Gruß Wolfi
AW: Lösung
25.07.2005 10:08:02
Kisselstein
Hallo Reinhard,
muss leider doch noch was Fragen:
Hab gerade entdeckt, dass es ein kann, dass es eine Nummer in der Spalte Nachfolger gibt die aber in der Spalte Nr. nicht vorhanden ist. Dann gibt es beim Vergleichen einen Fehler beim Code: t = Application.WorksheetFunction.Match(CInt(a(nn)), ws1.Columns(2), 0).
Kann man das irgendwie abfangen?
Also wenn die Nummer in Nachfolger mit keiner Nummer in Nr. übereinstimmt dann leere Zeile einfügen mit der Nummer des Nachfolgers.
Gruß und Danke
Wolfi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige