Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1280to1284
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
Inhaltsverzeichnis

Nach Spaltenköpfe suchen und Spalte kopieren

Nach Spaltenköpfe suchen und Spalte kopieren
23.10.2012 14:04:03
Jockel
Hallo,
ich habe eine Arbeitsmappe, in der befinden sich zwei Tabellenblätter, als Beispiel TABELLE1 und TABELLE2.
Tabelle1 ist zuerst mal leer.
Es werden dann Daten in dieses Tabellenblatt eingefügt. Die Daten haben in der Zeile 1 einen Spaltenkopf (Beschriftung)
Die Spalten der Daten können aber bei jeden einfügen ein bisschen variieren, mal sind sie nicht exakt in der gleichen Reihenfolge oder es sind zwischendurch mal ganz neu Spalten dabei.
Da ich aus diesen eingefügten Daten immer die gleichen Spalten benötige, dachte ich, vielleicht könnte man das mit einem Makro lösen.
Kann man mit einem Makro auf dem ersten Tabellenblatt die erste Zeile (die mit den Spaltenköpfen) durchlaufen lassen, nach den Strings zB: "Name" , "Adresse" , "Alter" .... suchen lassen und diese entsprechneden Spalten auf das Tabellenblatt 2 kopieren, egal, an welcher Position sich diese Spalten befinden.
Ich glaube, das wäre aber noch nicht mal das Problem. Eventuell ist die Mange das Problem. Meine Quelltabelle, die ich reinkopiere, kann zwischen 40 und 70 Spalten haben. Davon müssten so ca. 50 kopiert werden.
Also, nach 50 Strings in einer Zeile zu suchen, ist sicher auch nicht das Wahre.
Eventuell wäre aber eine andere Vorgehensweise möglich:
Wenn ich in meinem Tabellenblatt2 in der ersten Zeile schon mal die gewünschten Spaltenköpfe definiere (als Referenz) , die ich haben will. Ein Makro schaut zuerst im Tabellenblatt2 nach dem ersten String in Zeile 1, wechselt dann zum Tabellenblatt1 und holt sich dort die entsprechende Spalte heraus, und kopiert sie im Tabellenblatt2 rein.
Dann wird in der Zeile 1 in Spalte B der String geholt, wieder zum Tabellenblatt1 gewechselt und da wieder die entprechende Spalte kopieren...usw.
Das so lange, bis aus dem Tabellenblatt2 alle Spalten abgearbeitet sind.
Die Idee wäre ja da, aber an der umsetzung mangelt es.
Hat jemand sowas schon mal gemacht, oder ein ähnliches Beispiel parat.
Würde mir sehr weiter helfen.
Danke schon mal
Jockel

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Spaltenköpfe suchen und Spalte kopieren
23.10.2012 14:30:00
Matze,Matthias
Hi Jockel,
.., kannste da nicht eine Musterdatei erstellen Zwecks besseren Durchblick.
Matze

Hier ist eine Beispieldatei ...
23.10.2012 14:54:09
Jockel
Hallo
hier ist so eine Datei.
Ist ganz einfach gehalten.
https://www.herber.de/bbs/user/82279.xlsx
Wie schon geschrieben, in wirklichkeit habe ich bis zu 70 Spalten.
Gruß
Jockel

..offen!...
23.10.2012 15:16:18
Matze,Matthias
Hi Jockel,
ich versuch mich mal damit, kann aber dauern , ich lasse aber offen für die Profis
die das lesen.
Matze

AW: Hier ist eine Beispieldatei ...
23.10.2012 15:28:31
UweD
Hallo nochmal
hab gerade erst die Musterdatei gesehen.
Im Makro hab ich nur Die Tabellenzuordnungen abgeändert.
Sub Copy_Col()
On Error GoTo Fehler
Dim TB1, TB2, i%, SP
Dim LC%, C
Set TB2 = Sheets("Tabelle1")
Set TB1 = Sheets("Tabelle2")
LC = TB1.Cells(1, Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile
Application.ScreenUpdating = False
For i = 1 To LC
SP = TB1.Cells(1, i).Value
Set C = TB2.Rows(1).Find(SP, LookIn:=xlValues, LookAt:=xlWhole)
If Not C Is Nothing Then
TB2.Columns(C.Column).Copy TB1.Columns(i)
End If
Next
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Gruß UweD

Anzeige
AW: Nach Spaltenköpfe suchen und Spalte kopieren
23.10.2012 15:20:26
UweD
Hallo
- Die Spaltennamen müssen in Tabelle 1 in der oberen Zeile eingetragen sein.
- Das Makro kopiert dann die komplette Spalte (inkl. Kopfzeile) aus Tabelle2 genau dorthin.
Sub Copy_Col()
On Error GoTo Fehler
Dim TB1, TB2, i%, SP
Dim LC%, C
Set TB1 = Sheets("Tabelle1")
Set TB2 = Sheets("Tabelle2")
LC = TB1.Cells(1, Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile
Application.ScreenUpdating = False
For i = 1 To LC
SP = TB1.Cells(1, i).Value 'Überschrift
Set C = TB2.Rows(1).Find(SP, LookIn:=xlValues, LookAt:=xlWhole)
If Not C Is Nothing Then
TB2.Columns(C.Column).Copy TB1.Columns(i)
End If
Next
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Gruß UweD

Anzeige
@ uwe andersherum,...
23.10.2012 15:50:34
Matze,Matthias
Hallo Uwe,
..., so wie ich das gelesen habe soll es andersherum sein, habe deinen Code
abgeändert...
Sub Copy_Col()
On Error GoTo Fehler
Dim TB1, TB2, i%, SP
Dim LC%, C
Set TB1 = Sheets("Tabelle1")
Set TB2 = Sheets("Tabelle2")
LC = TB1.Cells(1, Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile
Application.ScreenUpdating = False
For i = 1 To LC
SP = TB2.Cells(1, i).Value 'Überschrift
Set C = TB1.Rows(1).Find(SP, LookIn:=xlValues, LookAt:=xlWhole)
If Not C Is Nothing Then
TB1.Columns(C.Column).Copy TB2.Columns(i)
End If
Next
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Gruß Matze

Anzeige
AW: @ UWE_ Frage,...
23.10.2012 15:54:03
Matze,Matthias
Dim TB1, TB2, i%, SP
Dim LC%, C
Wo kann ich das erlesen? Was bedeutet das %
sich fragender Matze

AW: @ UWE_ Frage,...
23.10.2012 16:08:41
UweD
Hallo Matze
das sind Typkennzeichen.
anstelle von
DIM i As Integer kannst du
DIM i% verwenden
Long &
Currency @
Single !
Double #
String $
Schreibt sich schneller.
Gruß UweD

Danke, genau so ...
23.10.2012 17:10:56
Jockel
Hallo Uwe
Danke, genau so soll es sein.
Hab vielen Dank
Gruß
Jockel

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige