Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
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

Tabellenspalten vergleichen

Tabellenspalten vergleichen
05.08.2014 15:40:19
Manfred
Hallo zusammen,
habe zwar gesucht aber nichts gefunden.
Ich habe ca. 11 identische Blätter mit gleichem Inhalt jedoch alle Blätter heißen anders. Andere Blätter mit anderem Inhalt hat es auch noch.
Wenn ich in Tab1 im Bereich E1-P1 eine neue Überschrift zufüge sollte diese im aktiven Blatt (zBs. Tab2 ) beim Makrostart mit Tab1 verglichen und übernommen werden. Der Bereich in Tab2 soll dann automatisch um diese neuen Überschriften erweitert werden, d.h. die neuen Spalten müssen mit Formatierung eingefügt werden, andere Spalten nach rechts verschieben, nichts überschreiben.
https://www.herber.de/bbs/user/91913.xls
Ein Beispiel habe ich mit hochgeladen.
Mit freundlichen Grüßen
Manfred

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenspalten vergleichen
05.08.2014 16:05:08
Adis
Hallo
anbei eine kurzes Makro Lösung. In ein normales Modulblatt kopieren und testen.
Das Programm fragt per MsgBox ob man in die aktive Tabelle kopieren will oder nicht
Unerwünschte Tabellen können per If übersprungen werden indem man den Namen angibt.
Sub Spalten_einfügen()
Dim ok, i As Integer
On Error Resume Next
For i = 1 To Worksheets.Count
Sheets(i).Select
If ActiveSheet.Name = "Tabelle1" Then GoTo weiter
'If ActiveSheet.Name = "unerwünscht" Then GoTo weiter
ok = MsgBox("Spalten einfügen?", vbYesNoCancel)
If ok = vbCancel Then Exit For
If ok = vbYes Then
Sheets("Tabelle1").Columns("E:P").Copy
ActiveSheet.Columns("E:P").Insert Shift:=xlToRight
End If
weiter:
Next i
Sheets("Tabelle1").Select
End Sub
Gruss Adis

Anzeige
AW: Tabellenspalten vergleichen
05.08.2014 16:07:48
Adis
Nachtrag
Bitte nach Next i noch Application.CutCopyMode = False einsetzen. Hatte ich vergessen
Next i
Application.CutCopyMode = False
Sheets("Tabelle1").Select
End Sub
Gruss Adis

AW: Tabellenspalten vergleichen
05.08.2014 16:22:47
Robert
Adis,
Wenn du dir die Beispielmappe anschaust erkennst du dass es etwas komplizierter ist.
Er will z.B. nur eine einzelne Überschrift irgendwo zwischen Eund P neu einfügen (und damit wächst der Bereich schon auf E:Q).
Dann will er natürlich nur die neue Überschrift übertragen.
Dein Code Erzeugt jedes Mal ein Abbild von Tabelle1 E:P, unabhängig davon, wie viele Überschriften neu sind
Nichts für ungut :)

Anzeige
AW: Tabellenspalten vergleichen
05.08.2014 16:26:48
Manfred
Hallo Adis,
danke für die Lösung. Ich baus um.
Gruß
Manfred

AW: Tabellenspalten vergleichen
05.08.2014 16:14:34
Robert
Hallo Manfred,
benenne einen Überschriftenbereich E-P in deiner Haupttabelle (in meinem Code "Überschriften")
Dann ein Modul wie dieses:
Sub test()
Dim Header As Range
For Each Header In Tabelle1.Range("Überschriften")
If Header.Text  ActiveSheet.Cells(Header.Row, Header.Column).Text Then
Header.EntireColumn.Copy
ActiveSheet.Cells(Header.Row, Header.Column).Columns(1).Insert
End If
Next Header
End Sub
Viele Grüße
Robert

AW: Tabellenspalten vergleichen
05.08.2014 16:27:48
Manfred
Hallo Robert,
funzt supper.
Dankeschön.
Gruß
Manfred

Anzeige
AW: Tabellenspalten vergleichen
05.08.2014 16:51:22
Manfred
Hallo Robert,
habe noch eine Frage. Wie kann ich das ganze auf E5-P5 verlegen ?
Wenn ich das mache bleibt das Makro mit ner Fehlermeldung stehen.
Gruß
Manfred

AW: Tabellenspalten vergleichen
06.08.2014 08:01:43
Robert
Hallo Manfred,
Zuerst solltest du dich versichern, dass der benannte Bereich den Richtigen Bezug hat.
Nämlich

=Tab1!$E$5:$P$5
Und dann ist eine kleine Änderung im Code erforderlich.
Sollen weiterhin ganze Spalten eingefügt werden, sieht das so aus:
Sub test()
Dim Header As Range
For Each Header In Tabelle1.Range("Überschriften")
If Header.Text  ActiveSheet.Cells(Header.Row, Header.Column).Text Then
Header.EntireColumn.Copy
ActiveSheet.Cells(1, Header.Column).Columns(1).Insert
End If
Next Header
End Sub
Soll nur die Spalte ab Zeile 5 Kopiert werden, muss man da nochmal dran schrauben :)
Viele Grüße
Robert

Anzeige
AW: Tabellenspalten vergleichen
06.08.2014 08:07:12
Robert
Und hier die Lösung, wenn Zeile 1-4 beim Einfügen unberührt bleiben sollen:
Sub test()
Dim Header As Range
For Each Header In Tabelle1.Range("Überschriften")
If Header.Text  ActiveSheet.Cells(Header.Row, Header.Column).Text Then
Tabelle1.Range(Header.Address, Tabelle1.Cells(Tabelle1.UsedRange.SpecialCells( _
xlCellTypeLastCell).Row, Header.Column)).Copy
ActiveSheet.Cells(Header.Row, Header.Column).Columns(1).Insert
End If
Next Header
End Sub
Viele Grüße
Robert

AW: Tabellenspalten vergleichen
06.08.2014 11:24:34
Manfred
Hallo Robert,
ja ich habe alles berücksichtigt wie du schreibst. Es funzt auch in Zeile 1
Dein geänderter Code funzt nicht so richtig.
Es müssen immer ganze Spalten eingeführt werden nicht erst von Zeile 5 aus.
Die alten Bezeichnungen werden nach Zeile 6 kopiert od. verschoben.
Kannst du dir das bitte nochmal anschauen.
Gruß
Manfred

Anzeige
AW: Tabellenspalten vergleichen
07.08.2014 10:45:55
Robert
Hallo Manfred,
ich habe zweimal auf deinen Beitrag geantwortet.
Einmal mit einer Lösung, die ab zeile 5 neue spalten einfügt (die hast du gefunden).
Und einmal (der Beitrag davor) mit einer angepassten Lösung, die komplette Spalten neu einfügt.
Das war die hier:
Sub test()
Dim Header As Range
For Each Header In Tabelle1.Range("Überschriften")
If Header.Text  ActiveSheet.Cells(Header.Row, Header.Column).Text Then
Header.EntireColumn.Copy
ActiveSheet.Cells(1, Header.Column).Columns(1).Insert
End If
Next Header
End Sub
viele Grüße
Robert

Anzeige
AW: Tabellenspalten vergleichen
07.08.2014 14:03:02
Manfred
Hallo Robert,
sorry, da habe ich wohl was übersehen, tut mir leid.
Die Lösung funz suppi, nun kann ich weiter machen.
Danke vielmals.
Mit freundlichen Grüßen
Manfred

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige