VBA Excel - Tabellen vergleichen und zusammenführen

  • Excel
  • Tabellen
  • Vergleichen
  • Zusammenführen
  • Makro
  • VBA

Geschrieben

Ich hab da ein Problem.

Ich möchte gern per Makro 2 Tabellen vergleichen und in ein neues einfügen.

Dort soll alles richtig geordnet sein und die Werte übernommen werden.

 

Jetzt hab ich folgendes Makro, aber hier wird statt den Werten eine Farbe genommen.

Werte sind leider nicht vorhanden.

Und ich möchte gerne die 2 Tabellen anders auswählen, sonst muss ich immer das makro ändern.

Kann mir hier jemand helfen??


Sub ArbeitsmappenVergleichen3()
  Dim wkbZiel As Workbook
  Dim wkbQuelle As Workbook
  Dim wksBlatt As Worksheet
  Dim rngZelle As Range
  Dim rngVglZelle As Range
 
  Set wkbQuelle = Workbooks.Open(ThisWorkbook.Path & "\111.xlsb")
  Set wkbZiel = Workbooks.Open(ThisWorkbook.Path & "\1111.xlsb")

 
  For Each wksBlatt In wkbQuelle.Worksheets
   
    For Each rngZelle In wksBlatt.UsedRange
      Set rngVglZelle = wkbZiel.Worksheets(wksBlatt.Name).Range(rngZelle.Address)
     
      If rngZelle.Value <> rngVglZelle.Value Then
        rngVglZelle.Interior.ColorIndex = 3
      End If
   
    Next rngZelle
   
  Next wksBlatt

End Sub

 

 

Ich freu mich schon auf eure Hilfe

 

Lieben Gruss

Sebb

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Geschrieben

Hallo und zwar habe ich zu folgendem Makro eine Frage.

 

Ich möchte gerne mehrere Tabellen in eine vorhandene Datei einfügen.

Jetzt wird hier aber die Daten einfach nebeneinander geschrieben.

Ich hätte gerne das er die werte vergleicht und unter einander schreibt.

 

Funktioniert sowas??

 

 

Ich hoffe mir kann jemand helfen.

 

 

 

Option Explicit

Sub BlaetterZusammenkopieren()
   Dim objTargetWorksheet As Object
    Dim oSourceBook As Object
    Dim sPfad As String
    Dim sDatei As String
    Dim lErgebnisSpalte As Long
    Dim s As Long
    Dim z As Long

Set objTargetWorksheet = ActiveSheet
  
      'Application.ScreenUpdating = False

      
      Set objTargetWorksheet = ActiveSheet
      lErgebnisSpalte = 1

   
    
      sPfad = "D:\Users\BKU\sebastianlenglein\Desktop\Test Excel\Neuer Ordner\test\"
      sDatei = Dir(CStr(sPfad & "*.xlsb"))
   
      Do While sDatei <> ""
   
        
          Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, True)
       
         
          For s = 1 To oSourceBook.Sheets(1).UsedRange.Columns.Count
            For z = 1 To oSourceBook.Sheets(1).UsedRange.Rows.Count
              
                objTargetWorksheet.Cells(z, lErgebnisSpalte).Value = _
                    oSourceBook.Sheets(1).Cells(z, s).Value
            Next z
            lErgebnisSpalte = lErgebnisSpalte + 1
          Next s
       
         
          oSourceBook.Close False
       
         
          sDatei = Dir()
   
      Loop
   
      'Application.ScreenUpdating = True
      Set objTargetWorksheet = Nothing
      Set oSourceBook = Nothing
End Sub

 

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Geschrieben

Hast du schon mal im Excelforum geschaut? 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Geschrieben

Ja hab aber leider nichts passendes gefunden...

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Geschrieben

vor 3 Stunden schrieb Sebb:

Und ich möchte gerne die 2 Tabellen anders auswählen, sonst muss ich immer das makro ändern.

Kann mir hier jemand helfen??

vielleicht erst einmal eine kleiner Schritt weiter: Wenn du die Objektvariablenzuweisung "Set" so vornimmst

    Set wkbQuelle = Workbooks.Open(Application.GetOpenFilename("Micrsoft Excel-Dateien (*.xlsx),*.xlsb"))
    Set wkbZiel = Workbooks.Open(Application.GetOpenFilename("Micrsoft Excel-Dateien (*.xlsx),*.xlsb"))

kannst due die Dateien immer neu auswählen. War das so gemeint?

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Geschrieben · bearbeitet von Sebb

ja danke, das hilft mir ein wenig weiter.

 

Aber bei dem Rest bin ich noch überfordert

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Geschrieben

Für meine bescheidenen VBA-Kenntnisse ist das vielleicht eine Nummer zu groß. Aber bei einer präzieseren Aufgabenstellung sieht ein versierterer VBA-Kenner (hier oder in einem Excelforum) deine Anfrage vielleicht als Herausforderung. Mir jedenfalls ist die Aufgabenstellung nicht ganz klar.
Z.B. zu deiner ersten Anfrage:
Ich vergleiche den Zellinhalt jede Zelle einer Tabelle mit dem Zellinhalt der jeweiligen Zelle an gleicher Position in einer anderen Tabelle? Was genau soll passieren, wenn a) der Zellinhalt gleich ist, b) der Zellinhalt ungleich ist? Handelt es sich um Zahlenwerte? Ist die Tabelle sortiert? Ist die Position der Werte in der Ergebnistabelle egal?
Beispieltabellen wären da sinnvoll.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Geschrieben · bearbeitet von silentbob

Vielleicht eine Hilfe bzw. Unterstützung https://www.fernuni-hagen.de/imperia/md/content/zmi_2010/b012.pdf Teil1

 

vor 9 Stunden schrieb Sebb:

Hallo und zwar habe ich zu folgendem Makro eine Frage.

 

Ich möchte gerne mehrere Tabellen in eine vorhandene Datei einfügen.

Jetzt wird hier aber die Daten einfach nebeneinander geschrieben.

Ich hätte gerne das er die werte vergleicht und unter einander schreibt.

 

Funktioniert sowas??

Im Grunde würde es so grob ablaufen (da mir keine detailliertern Infos vorliegen, wird der Vorgang grob beschrieben) :

1) Workbook/Sheet aktivieren

2) Zellen/Spalten speichern

3) Workbook/Sheet aktivieren

4) Werte vergleichen

5) Werte speichern

6) Neues Tabellenblat erstellen

7) Tabellenblatt aktivieren

8) Werte je Zeile einfügen

 

Wenn du das anstatt je Spalte haben möchtest, dann schreib es einfach je Zeile. Wie du Zeilen ansprichst, kann dir das Handbuch helfen.

 

Vielleicht hilft dir das.

vor 9 Stunden schrieb Sebb:

Option Explicit

Sub BlaetterZusammenkopieren()
   Dim objTargetWorksheet As Object
    Dim oSourceBook As Object
    Dim sPfad As String
    Dim sDatei As String
    Dim lErgebnisSpalte As Long
    Dim s As Long
    Dim z As Long

Set objTargetWorksheet = ActiveSheet
  
      'Application.ScreenUpdating = False

      
      Set objTargetWorksheet = ActiveSheet
      lErgebnisSpalte = 1

   
    
      sPfad = "D:\Users\BKU\sebastianlenglein\Desktop\Test Excel\Neuer Ordner\test\"
      sDatei = Dir(CStr(sPfad & "*.xlsb"))
   
      Do While sDatei <> ""
   
        
          Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, True)
       
         
          For s = 1 To oSourceBook.Sheets(1).UsedRange.Columns.Count
            For z = 1 To oSourceBook.Sheets(1).UsedRange.Rows.Count
              
                objTargetWorksheet.Row(ErgebnisSpalte, z).Value = _
                    oSourceBook.Sheets(1).Cells(z, s).Value

            Next z
            lErgebnisSpalte = lErgebnisSpalte + 1
          Next s
       
         
          oSourceBook.Close False
       
         
          sDatei = Dir()
   
      Loop
   
      'Application.ScreenUpdating = True
      Set objTargetWorksheet = Nothing
      Set oSourceBook = Nothing
End Sub

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!


Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.


Jetzt anmelden