Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wenn Spalte D übereinstimmt, dann Inhalt kopieren

Wenn Spalte D übereinstimmt, dann Inhalt kopieren
30.11.2008 20:33:51
Wolfgang
Hallo,
in einer Mappe befinden sich zwei Tabellenblätter -Basis und Basis1-, in Spalte D steht die Kundennummer. Wie kann ich erreichen, dass ein Abgleich zu weiteren Tabellen -Tabelle1-4- (es können 4, aber auch nur 1 Tabellenblatt vorhanden sein) erfolgt und wenn die Kundennummer aus Tabelle 1-4 übereinstimmt, der Text, sofern vorhanden, aus Spalte I:K jeweils in die Zeile von Basis und/oder Basis2 kopiert wird. Danke schon jetzt für die Rückmeldungen.
Herzliche Grüße - Wolfgang
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Spalte D übereinstimmt, dann Inhalt kopieren
30.11.2008 20:48:47
Rocky
Hallo,
ich denke das machst du am besten mit SVERWEIS. Gib einfach mal in die Excelhilfe ein.

Gruß Rocky


Wenn unter den Blinden der Einäugige König ist, dann findet man hier die Herren der Ringe!

Anzeige
AW: Wenn Spalte D übereinstimmt, dann Inhalt kopieren
01.12.2008 05:47:39
Wolfgang
Hallo Rocky,
herzlichen Dank für Deine Rückmeldung; das Problem ist, dass die Tabellen1-4 fortlaufend verändert werden und mal 1 Tabellenblatt, mal aber auch 4 Tabellenblätter exisiteren können und auch der Inhalt dieser Tabellenblätter bzw. die Zeilenanzahl können variieren, so dass ich das gerne über VBA gelöst hätte. Ich habe da schon verschiedene Versionen probiert und auch Beispiele unter Recherche getestet, komme aber auf keinen grünen Zweig. Hätte da jemand noch eine Idee oder einen Ansatz mit VBA? - Danke schon jetzt wieder für die Rückmeldungen.
Herzliche Grüße
Wolfgang
Anzeige
AW: Wenn Spalte D übereinstimmt, dann Inhalt kopieren
01.12.2008 11:58:18
Rocky
Hmmm,
Lad doch mal ne Datei hoch. Ambesten mit VORHER NACHHHER.
Gruß Rocky
AW: Wenn Spalte D übereinstimmt, dann Inhalt kopieren
01.12.2008 20:22:00
Wolfgang
Hallo Rocky,
erneut herzlichen Dank für Deine Rückmeldung. Anbei die Mustermappe, die ich aus Datenschutzgründen abgeändert und abgespeckt habe. Im Original enthält sie ca. 3000 Datensätze; Die Tabellen1-4 habe ich hineinkopiert; üblicherweise werden sie über einen anderen UF importiert und ausgeblendet; Bei Verlassen der Mappe werden sie dann auch wieder gelöscht. - Ich würde mich freuen, wenn es möglich wäre, nun innerhalb der Arbeitsmappe den Abgleich zwischen den Tabellen Grunddaten/Altdaten einerseits und den Tabellen1-4 andererseits hinzubekommen, um dann Änderungen aus den Tabellen 1-4 in die Tabelle Grunddaten und/oder Altdaten -Spalten I;K- hinein zu kopieren. Meine Versuche, irgendwelche Codes aus Recherche anzupassen sind gescheitert und meine Excel/VBA-Kenntnisse reichen dafür wohl noch nicht aus. Auch was Gerd geantwortet hat, ist noch in vielen Bereichen für mich ein Buch mit sieben Siegeln. Danke schon jetzt wieder für die Rückmeldung.
Gruß - Wolfgang
https://www.herber.de/bbs/user/57284.xls
Anzeige
AW: Wenn Spalte D übereinstimmt, dann Inhalt kopieren
01.12.2008 09:40:00
Gerd
Hallo Wolfgang!
in einer Mappe befinden sich zwei Tabellenblätter -Basis und Basis1-, in Spalte D steht die Kundennummer.
Wie kann ich erreichen, dass ein Abgleich zu weiteren Tabellen -Tabelle1-4- (es können 4, aber auch nur 1 Tabellenblatt vorhanden sein) erfolgt
-Prüfung vorschalten, ob Tabellen mit diesen Namen vorhanden sind
und wenn die Kundennummer aus Tabelle 1-4 übereinstimmt
- mit SVerweis oder Application.Match oder Find oder For...Next-Schleife
, der Text, sofern vorhanden, aus Spalte I:K
-Prüfung, ob Werte vorhanden mit Len oder IsEmpty
jeweils in die Zeile von
- bei mehreren Fundstellen müssten ggf. die Ausgabezellen definiert werden.
Basis und/oder Basis2 kopiert wird
- je eine Schleife für Prüfung Blatt Basis u. Blatt Basis2 oder einheitliche Subprozedur mit Übergabe
des Blattnamens wiederholt aufrufen.
Gruß Gerd
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Kundennummer abgleichen und Inhalte kopieren in Excel


Schritt-für-Schritt-Anleitung

Um den Inhalt basierend auf der Übereinstimmung der Kundennummer in Excel zu kopieren, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne die Excel-Datei mit den Tabellenblättern „Basis“ und „Basis1“, sowie den zusätzlichen Tabellen „Tabelle1“, „Tabelle2“, „Tabelle3“ und „Tabelle4“.

  2. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ > „Einfügen“ > „Modul“.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub InhalteKopieren()
        Dim wsBasis As Worksheet
        Dim wsTabelle As Worksheet
        Dim i As Long, j As Long
        Dim lastRowBasis As Long, lastRowTabelle As Long
    
        Set wsBasis = ThisWorkbook.Sheets("Basis")
    
        lastRowBasis = wsBasis.Cells(wsBasis.Rows.Count, "D").End(xlUp).Row
    
        For j = 1 To 4 ' Tabellen 1 bis 4
            On Error Resume Next ' Fehler ignorieren, wenn Tabelle nicht existiert
            Set wsTabelle = ThisWorkbook.Sheets("Tabelle" & j)
            On Error GoTo 0
    
            If Not wsTabelle Is Nothing Then
                lastRowTabelle = wsTabelle.Cells(wsTabelle.Rows.Count, "D").End(xlUp).Row
    
                For i = 2 To lastRowTabelle ' Annahme: Überschrift in Zeile 1
                    If wsTabelle.Cells(i, "D").Value = wsBasis.Cells(i, "D").Value Then
                        wsBasis.Cells(i, "I").Value = wsTabelle.Cells(i, "I").Value
                        wsBasis.Cells(i, "K").Value = wsTabelle.Cells(i, "K").Value
                    End If
                Next i
            End If
        Next j
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus: Drücke ALT + F8, wähle „InhalteKopieren“ aus und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler: „Laufzeitfehler 9: Index außerhalb des gültigen Bereichs“

    • Lösung: Stelle sicher, dass die Tabellenblätter „Tabelle1“, „Tabelle2“, „Tabelle3“ und „Tabelle4“ tatsächlich existieren.
  • Fehler: „Objektvariable oder With-Blockvariable nicht gesetzt“

    • Lösung: Überprüfe, ob das Arbeitsblatt „Basis“ korrekt benannt ist und existiert.
  • Kundennummern stimmen nicht überein

    • Prüfe, ob die Kundennummern in beiden Tabellen im gleichen Format vorliegen (z.B. keine führenden Leerzeichen).

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch die SVERWEIS-Funktion nutzen:

  1. In der Zelle I2 von „Basis“ könntest Du folgende Formel verwenden:

    =SVERWEIS(D2;Tabelle1!D:I;2;FALSCH)
  2. Für die Spalte K kannst Du dasselbe Prinzip mit einer anderen Tabelle anwenden.

Diese Methode ist allerdings weniger flexibel, da sie nicht dynamisch auf Änderungen in den Tabellenblättern reagiert.


Praktische Beispiele

Angenommen, Du hast folgende Daten:

Basis:

D (Kundennummer) I (Name) K (Ort)
123
456

Tabelle1:

D (Kundennummer) I (Name) K (Ort)
123 Max Berlin
456 Anna Hamburg

Nach Ausführung des Makros wird „Basis“ so aussehen:

D (Kundennummer) I (Name) K (Ort)
123 Max Berlin
456 Anna Hamburg

Tipps für Profis

  • Fehlerbehandlung: Füge „On Error Resume Next“ hinzu, um Fehler zu ignorieren, aber sei vorsichtig, da dies auch relevante Fehler unterdrücken kann.

  • Datenüberprüfung: Verwende die Funktion IsEmpty, um sicherzustellen, dass keine leeren Zellen kopiert werden.

  • Erweiterte Logik: Du könntest die Schleifen erweitern, um mehrere Übereinstimmungen zu finden und zu kopieren.


FAQ: Häufige Fragen

1. Frage Kann ich das Skript auch für mehr als vier Tabellenblätter anpassen?

Antwort: Ja, ändere einfach die Schleife von For j = 1 To 4 auf die Anzahl der gewünschten Tabellenblätter.

2. Frage Wie kann ich sicherstellen, dass die Daten immer aktuell sind?

Antwort: Du kannst das Makro bei jedem Öffnen der Datei automatisch ausführen lassen, indem Du den Code in die „Workbook_Open“-Ereignisprozedur einfügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige