Microsoft Excel

Herbers Excel/VBA-Archiv

Datensortierung


Betrifft: Datensortierung von: Tomi Haller
Geschrieben am: 10.08.2016 08:59:25

Hi,

ich möchte eine Datenzusammenführung umsetzen, habe aber immense Probleme beim programmieren.

Meine Ausgangsdaten: txt-Files, welche von der Struktur her gleich aufgebaut sind: Name, Abkürzung, Wert, Toleranz unten, Toleranz oben.
Nur ist es jetzt so, dass die txt-Files nicht immer die gleichen Parameter vorhanden sind. Dh. es kann vorkommen, dass z.B. ein txt ein Parameter mehr hat als alle anderen.
Die bisherige Sortierung sollte bei der Zusammenführung aber immer gewahrt bleiben. Es soll keine alphabetische Sortierung sein! Ich möchte somit eine Gesamtliste mit allen Parametern haben.

Jedes TxtFile wird per Button auf einem separatem Tabellenblatt importiert und angepasst --> Umsetzung per Query tables schon fertig, siehe Makros

Ganz links befindet sich ein Gesamttabellenblatt, welches alle Parameter enthält. Je nach dem ob ein Tabellenblatt ein Parameter beinhaltet, soll natürlich der Wert des jeweiligen Blatts in das Gesamtblatt mitgeführt werden.
Mit Formeln komme ich hier absolut nicht weiter, da ich nicht einfach das längste Tabellenblatt nehmen und annehmen kann, dass dort alle möglichen Parameter vorhanden sind.
Ergo kommt es eben vor, dass ein Parameter nur von einem Tabellenblatt geliefert wird und alle anderen Tabellenblätter damit keine Werte lieferun und somit leer bleiben.

Ich weiß auch wie die Vorgehensweise der Sortierung ist, nur kann ich es nicht umsetzen.

1) Ich kopiere mir aus dem ersten tabellenblatt die erste Spalte in ein neues Tabellenblatt 'EXTRA'.
2) Nun vergleiche ich diese mit der ersten Spalte des zweites Tabellenblatts, indem ich mir Zelle für Zelle nacheinander rausnehme und schaue, ob diese Zelle vorhanden ist. Ist sie vorhanden, passiert nichts. Die Zeilennummer in dem neuen Tabellenblatt soll jedoch gespeichert werden. Ist sie nicht vorhanden, soll nach der Zeile der letzten vorhandenen Zelle eine Zeile eingefügt und der Wert reinkopiert werden. usw.
3) Vergleich mit der ersten Spalte des dritten, vierten, etc. Tabellenblatts.

Dies ist meines Wissens nach die einzige Möglichkeit, wie ich die bisherige Reihenfolge beibehalte und dabei alle Werte zusammenführe.

HIER die bisherige EXCEL: https://www.herber.de/bbs/user/107519.xlsm

Kann mir jmd mit der Schleife zum Zellenvergleich und -einsortierung helfen?

Ist das so richtig mit dem Einfügen der neuen Zeile und kopieren des aktuellen Werts, nach welchem in der Liste gesucht wurde?

Hier mal der Ansatz für das neue Makro zur Sortierung:

Sub SORT()
'
' SORT Makro
'

'
   Sheets("teil4").Select
   Columns("A:A").Select
   Range("A4").Activate
   Selection.Copy
   Sheets("EXTRA").Select
   Columns("A:A").Select
   ActiveSheet.Paste
   
Dim zeile As Long
Dim zeilemax_EXTRA As Long
Dim zeilemax_teil4 As Long
Dim zelle_vorhanden As Long


zeilemax_EXTRA = EXTRA.Cells(Rows.Count, 1).End(xlUp).Row   '[Ermitteln der Zeilenanzahl in  _
EXTRA]
zeilemax_teil4 = teil4.Cells(Rows.Count, 1).End(xlUp).Row   '[Ermitteln der Zeilenanzahl in  _
teil4]


For zeile = 1 To zeilemax_teil4
   
   wert_teil4 = teil4.Cells(zeile, 1).Value
   
   Set SuBe = Sheets("EXTRA").Range("A1:A107"). _
         Find(s, lookat:=xlWhole)
   
   If Not SuBe Is Nothing Then
       ' Parameter vorhanden.
       ' ZEILENNUMMER von EXTRA FÜR FOLGENDE ABFRAGEN DAUERHAFT MERKEN, BIS SIE GENUTZT WIRD
       zeile_vorhanden = ?
       
   Else
       ' Parameter nicht vorhanden: unter letzten vorhandenen Wert einfügen und einsetzen
       Rows(zeile_vorhanden).Insert Shift:=x1Down
       teil4.Cells(zeile, 1).Copy Destination:=EXTRA.Cells(zeile_vorhanden, 1)
       
   End If
Next zeile

End Sub

  

Betrifft: AW: viele Fragen von: Fennek
Geschrieben am: 10.08.2016 13:10:04

Hallo,

im Prinzip sollte es mit "=sverweis()" gehen. Aber ich konnte kein Konzept erkennen, wie verschiedene txt-Dateien zusammengefasst werden sollen. Die Dummies, alle Werte auf den Namen des Sheets gesetzt, ist nicht hilfreich.

Bitte zeige unmissverständlich, wie das Wunschergebnis aussehen soll.

mfg