VBA Excel - Tabellen vergleichen und zusammenführen

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

Posted

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

Share this post


Link to post
Share on other sites

Posted

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

 

 

Share this post


Link to post
Share on other sites

Posted

Hast du schon mal im Excelforum geschaut? 

Share this post


Link to post
Share on other sites

Posted

Ja hab aber leider nichts passendes gefunden...

Share this post


Link to post
Share on other sites

Posted

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?

 

Share this post


Link to post
Share on other sites

Posted · Edited by Sebb

ja danke, das hilft mir ein wenig weiter.

 

Aber bei dem Rest bin ich noch überfordert

 

Share this post


Link to post
Share on other sites

Posted

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.

Share this post


Link to post
Share on other sites

Posted · Edited by 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

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now