Excel Makro VBA Sortierung nach Spaltennamen
Hi Leute,
ich habe mich hier schon eingelesen und auch im Internet, aber irgendwie komme ich zu keiner Lösung..
Ich habe zwei verschiedene Excel Dokumente.
Diese bestehen aus Datensätzen von Kunden und was sie gekauft haben.
Jedes Dokument hat unterschiedliche Überschiften, z.B. bei Dokument 1 steht Vorname, bei dem 2. First Name.
Jetzt möchte ich aber, dass bei einer Makro Ausführung die Überschrift an sich erhalten bleibt und trotzdem die Reihenfolge identisch bleibt.
D.h. es müsste nach der Spalte mit Last Name suchen und die nach links oder rechts verschieben. Und wenn es eben Last Name nicht findet, soll es das eben mit Nachname machen.
Ich habe aber noch Vorname und First Name und Produkt und Application und zu guter Letzt E-Mail und Email Adress.
Das müsste es eben automatisch sortieren ohne dass ich etwas auswählen oder tippen muss.
Z.B. E-Mail muss von dem einen Dokument von Spalte 3 nach 1 verschoben werden und in dem anderen von 5 nach 1.
Ich hoffe es kann mir dabei jemand helfen!
Vielen Dank und liebe Grüße!
ich habe mich hier schon eingelesen und auch im Internet, aber irgendwie komme ich zu keiner Lösung..
Ich habe zwei verschiedene Excel Dokumente.
Diese bestehen aus Datensätzen von Kunden und was sie gekauft haben.
Jedes Dokument hat unterschiedliche Überschiften, z.B. bei Dokument 1 steht Vorname, bei dem 2. First Name.
Jetzt möchte ich aber, dass bei einer Makro Ausführung die Überschrift an sich erhalten bleibt und trotzdem die Reihenfolge identisch bleibt.
D.h. es müsste nach der Spalte mit Last Name suchen und die nach links oder rechts verschieben. Und wenn es eben Last Name nicht findet, soll es das eben mit Nachname machen.
Ich habe aber noch Vorname und First Name und Produkt und Application und zu guter Letzt E-Mail und Email Adress.
Das müsste es eben automatisch sortieren ohne dass ich etwas auswählen oder tippen muss.
Z.B. E-Mail muss von dem einen Dokument von Spalte 3 nach 1 verschoben werden und in dem anderen von 5 nach 1.
Ich hoffe es kann mir dabei jemand helfen!
Vielen Dank und liebe Grüße!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 283658
Url: https://administrator.de/contentid/283658
Ausgedruckt am: 26.11.2024 um 11:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo easy4breezy!
Sollte in etwa so gehen:
Grüße Dieter
Sollte in etwa so gehen:
Option Explicit
Option Compare Text
Const RowHeader = 1 'Zeilennummer Überschriften
'Soll-Spaltenreihenfolge deutsch/englisch (ab Spalte1) entsprechend anpassen
Const StrHeader = "Vorname/First Name|Nachname/Last Name|Produkt/Application|E-Mail/Email Address"
Sub SortColumns()
Dim arrHeader As Variant, rngHeader As Range, c As Integer, i As Integer
arrHeader = Split(StrHeader, "|")
For i = 0 To UBound(arrHeader)
For c = 0 To Cells(RowHeader, "A").CurrentRegion.Columns.Count - 1
Set rngHeader = Cells(RowHeader, "A").Offset(0, c)
If InStr(arrHeader(i), rngHeader.Value) > 0 Then
If i <> c Then
Columns(rngHeader.Column).Cut
Columns(i + 1).Insert Shift:=xlToRight
End If
Exit For
End If
Next
Next
End Sub
Grüße Dieter
In einer der beiden Listen sind in den ersten 9 Zeilen Informationen, die für meine Auswertungen irrelevant sind.
Range("1:9").Delete