Spalten in bestimmte Reihenfolge bringen

23/02/2013 - 18:07 von Ahmed Martens | Report spam
Hallo Leute,

ich muss eine Exceltabelle immer in einer bestimmten Reihenfolge
bringen. Dabei kann es vorkommen, dass es die Spalte nicht gibt, so dass
ich diese Spalte an der entsprechenden Position einfügen muss. Auch ist
die Spaltenreihenfolge immer wahlfrei.

Hier die Reihenfolge:

Dim sCol As New Collection
sCol.Add "Betrag"
sCol.Add "S/H"
sCol.Add "Datum"
sCol.Add "Belegnr"
sCol.Add "Belegnr2"
sCol.Add "Kto"
sCol.Add "GGKto"
sCol.Add "KoSt1"
sCol.Add "KoSt2"

Nun kann es vorkommen, dass einzelne Spalten nicht vorhanden sind. Dann
muss ich diese einfach an der entsprechenden Reihenfolge einfügen.

Hat einer vielleicht eine Idee wie ich das am einfachsten hinbekomme?
Ich habe im Augenblick ein Brett vor dem Kopf. :-?

Vielen Dank im voraus.

Gruß Ahmed

Antworten bitte nur in der Newsgroup
Windows 7 64bit Home Premium
Office Prof. 2010
 

Lesen sie die antworten

#1 Claus Busch
23/02/2013 - 18:35 | Warnen spam
Hallo Ahmed,

Am Sat, 23 Feb 2013 18:07:13 +0100 schrieb Ahmed Martens:

ich muss eine Exceltabelle immer in einer bestimmten Reihenfolge
bringen. Dabei kann es vorkommen, dass es die Spalte nicht gibt, so dass
ich diese Spalte an der entsprechenden Position einfügen muss. Auch ist
die Spaltenreihenfolge immer wahlfrei.



mein Ansatz:
Bringe deine Spaltenüberschriften in Tabelle2 in der richtigen
Reihenfolge ein. Durchlaufe die Spalten in Tabelle1 und wenn die Spalte
vorhanden ist, bringe die Daten in die richtige Spalte in Tabelle2:

Sub Anordnung()
Dim wsh As Worksheet
Dim rngC As Range
Dim LCol As Integer
Dim LRow As Long
Dim i As Integer
Dim j As Integer

Set wsh = Sheets("Tabelle1")

With wsh
Sheets("Tabelle2").Range("A1:I1") = Array("Betrag", "S/H", "Datum",
"Belegnr", _
"Belegnr2", "Kto", "GGKto", "KoSt1", "KoSt2")

LRow = .Cells(.Rows.Count, 1).End(xlUp).Row
LCol = .Cells(1, .Columns.Count).End(xlToLeft).Column

For i = 1 To 9
For j = 1 To LCol
If Sheets("Tabelle2").Cells(1, i) = .Cells(1, j) Then
.Range(.Cells(2, j), .Cells(LRow, j)).Copy _
Sheets("Tabelle2").Cells(2, i)
End If
Next j
Next i
End With
End Sub


Mit freundlichen Grüßen
Claus Busch
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3

Ähnliche fragen