Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Tabellenspalten vergleichen

Betrifft: Tabellenspalten vergleichen von: Manfred
Geschrieben am: 05.08.2014 15:40:19

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

  

Betrifft: AW: Tabellenspalten vergleichen von: Adis
Geschrieben am: 05.08.2014 16:05:08

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


  

Betrifft: AW: Tabellenspalten vergleichen von: Adis
Geschrieben am: 05.08.2014 16:07:48

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


  

Betrifft: AW: Tabellenspalten vergleichen von: Robert
Geschrieben am: 05.08.2014 16:22:47

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 :)


  

Betrifft: AW: Tabellenspalten vergleichen von: Manfred
Geschrieben am: 05.08.2014 16:26:48

Hallo Adis,

danke für die Lösung. Ich baus um.

Gruß
Manfred


  

Betrifft: AW: Tabellenspalten vergleichen von: Robert
Geschrieben am: 05.08.2014 16:14:34

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


  

Betrifft: AW: Tabellenspalten vergleichen von: Manfred
Geschrieben am: 05.08.2014 16:27:48

Hallo Robert,

funzt supper.

Dankeschön.

Gruß
Manfred


  

Betrifft: AW: Tabellenspalten vergleichen von: Manfred
Geschrieben am: 05.08.2014 16:51:22

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


  

Betrifft: AW: Tabellenspalten vergleichen von: Robert
Geschrieben am: 06.08.2014 08:01:43

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


  

Betrifft: AW: Tabellenspalten vergleichen von: Robert
Geschrieben am: 06.08.2014 08:07:12

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


  

Betrifft: AW: Tabellenspalten vergleichen von: Manfred
Geschrieben am: 06.08.2014 11:24:34

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


  

Betrifft: AW: Tabellenspalten vergleichen von: Robert
Geschrieben am: 07.08.2014 10:45:55

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


  

Betrifft: AW: Tabellenspalten vergleichen von: Manfred
Geschrieben am: 07.08.2014 14:03:02

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


 

Beiträge aus den Excel-Beispielen zum Thema "Tabellenspalten vergleichen"