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

Forumthread: Werte in anderer Datei suchen und kopieren

Werte in anderer Datei suchen und kopieren
22.02.2008 12:31:00
Pierre
Hallo!
Ich habe folgendes Problem:
Es gibt 2 Excel-Dateien mit gleichen Spaltenaufbau.
In der 1. Datei sind in Tabelle1, SpalteA(dynamische Länge), ab Zelle A4 die zu suchenden Werte.
Diese Werte sollen in der 2. Datei auch in Tabelle1, SpalteA(dynamische Länge), ab Zelle A4 nach und nach gesucht werden.
Wird der entsprechende Zellwert in Spalte A der 1.Datei gefunden, so soll der Wert aus der gleichen Zeile aber aus Spalte E in die dem Suchbegriff entsprechende Zelle Spalte E in der 1. Datei kopiert werden.
Wird eine Wert nicht gefunden, so soll die Suche mit dem nächsten Wert fortsetzt werden.
Ich hoffe es ist nicht zu kompliziert beschrieben.
Wäre dankbar für ein paar Tipps dazu.
Gruß Pierre

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in anderer Datei suchen und kopieren
22.02.2008 14:06:38
mpb
Hallo Pierre,
hört sich für mich wie eine Aufgabe für die Funktion SVERWEIS an. Falls nicht, Problem nochmal neu schildern oder Datei hochladen.
Gruß
Martin

AW: Werte in anderer Datei suchen und kopieren
22.02.2008 14:17:17
zu
Servus,
hier ein kleines Makro, wenn beide Dateien offen sind.

Sub Suche()
Dim rSuche As Range, rFinde As Range
Dim lngLetzte1 As Long, lngLetzte2 As Long
Dim wkb1 As Workbook, wkb2 As Workbook
Dim wks1 As Worksheet, wks2 As Worksheet
Dim iLauf As Integer
Set wkb1 = ThisWorkbook
Set wkb2 = Workbooks("Name des anderen Workbooks")' hier Namen anpassen
Set wks1 = wkb1.Sheets("Tabelle1")
Set wks2 = wkb2.Sheets("Tabelle1")
With wks1
lngLetzte1 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
End With
With wks2
lngLetzte2 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
End With
Set rFinde = wks2.Range("A4:A" & lngLetzte2)
With wks1
For iLauf = 4 To lngLetzte1
Set rSuche = rFinde.Find(what:=.Cells(iLauf, 1), LookAt:=xlWhole, LookIn:=xlValues)
If Not rSuche Is Nothing Then
rSuche.Offset(0, 4).Copy .Cells(iLauf, 5)
End If
Next iLauf
End With
End Sub


Das Makro kommt in die Datei, in die kopiert werden soll.
Gruß
Chris

Anzeige
AW: Werte in anderer Datei suchen und kopieren
22.02.2008 14:24:00
fcs
Hallo Pierre,
meine Lösung.
Code muss im VBA-Editor unter dem Tabellenblatt eingefügt werden in dem in Spalte A die Suchbegriffe eingegeben werden.
Gruß
Franz

Private wbQuelle As Workbook, wbZiel As Workbook
Private wksQuelle As Worksheet, wksZiel As Worksheet
Private Const strQuelle As String = "MappeQuelle.xls" 'Datei mit den zu suchenden Werten
Private Const strPfadQuelle As String = "C:\Lokale Daten\Test"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
'Eingaben in Spalte A überwachen
If Target.Column = 1 And Target.Row >= 4 Then
Set wbZiel = ThisWorkbook
Set wksZiel = wbZiel.Worksheets(1)
'prüfen, ob Quell-Datei geöffnet
For Each wbQuelle In Application.Workbooks
If LCase(wbQuelle.Name) = LCase(strQuelle) Then Exit For
Next
If wbQuelle Is Nothing Then
'Quelldatei öffnen
Application.ScreenUpdating = False
Set wbQuelle = Workbooks.Open(Filename:=strPfadQuelle & "\" & strQuelle)
wbZiel.Activate
Application.ScreenUpdating = True
End If
Set wksQuelle = wbQuelle.Worksheets(1)
For Each Zelle In Target.Range("A1:A" & Target.Rows.Count)
Call WertSuchen(varSuchen:=Zelle.Value, ZeileZ:=Zelle.Row, ErsteSuchzeile:=4, _
Zielspalte:=5, Suchspalte:=1, OffsetSuchSpalte:=4)
Next
Set wbQuelle = Nothing: Set Zelle = Nothing: Set wbZiel = Nothing
Set wksQuelle = Nothing: Set wksZiel = Nothing
End If
End Sub
Sub WertSuchen(varSuchen As Variant, ZeileZ As Long, ErsteSuchzeile As Long, _
Zielspalte As Integer, Suchspalte As Integer, OffsetSuchSpalte As Integer)
Dim Zelle As Range
Application.EnableEvents = False
Set Zelle = wksQuelle.Columns(Suchspalte).Find(What:=varSuchen, LookIn:=xlValues, lookat:= _
xlWhole)
If Zelle Is Nothing Then
wksZiel.Cells(ZeileZ, Zielspalte).Value = "nicht gefunden"
Else
If VBA.IsEmpty(varSuchen) = True Then
wksZiel.Cells(ZeileZ, Zielspalte).ClearContents
Else
If Zelle.Row >= ErsteSuchzeile Then
wksZiel.Cells(ZeileZ, Zielspalte).Value = Zelle.Offset(0, OffsetSuchSpalte).Value
Else
wksZiel.Cells(ZeileZ, Zielspalte).Value = "nicht gefunden"
End If
End If
End If
Set Zelle = Nothing
Application.EnableEvents = True
End Sub


Anzeige
AW: Werte in anderer Datei suchen und kopieren
22.02.2008 14:35:36
Pierre
Hallo!
Danke für die Tipps.
Habe mir den Code von Franz angepasst.
Funktioniert bestens, danke an alle.
Gruß Pierre
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte in anderer Datei suchen und kopieren


Schritt-für-Schritt-Anleitung

Um Werte in einer anderen Excel-Datei zu suchen und zu übernehmen, kannst Du folgende Schritte durchführen:

  1. Vorbereitung der Dateien: Stelle sicher, dass beide Excel-Dateien geöffnet sind und die Struktur identisch ist.

  2. Verwendung von SVERWEIS: Eine einfache Möglichkeit, um Daten aus einer anderen Datei zu suchen, ist die Verwendung der Funktion SVERWEIS. Die Formel könnte wie folgt aussehen:

    =SVERWEIS(A4; '[Name der anderen Datei.xlsx]Tabelle1'!$A$4:$E$100; 5; FALSCH)

    Hierbei wird in der anderen Datei nach dem Wert in Zelle A4 gesucht und der entsprechende Wert aus Spalte E zurückgegeben.

  3. VBA-Makro verwenden: Wenn Du eine automatisierte Lösung benötigst, kannst Du ein VBA-Makro nutzen, wie im Forum beschrieben. Das folgende Makro sucht Werte in einer geöffneten Datei und kopiert die entsprechenden Werte:

    Sub Suche()
    Dim rSuche As Range, rFinde As Range
    Dim lngLetzte1 As Long, lngLetzte2 As Long
    Dim wkb1 As Workbook, wkb2 As Workbook
    Dim wks1 As Worksheet, wks2 As Worksheet
    Dim iLauf As Integer
    Set wkb1 = ThisWorkbook
    Set wkb2 = Workbooks("Name des anderen Workbooks") ' Hier Namen anpassen
    Set wks1 = wkb1.Sheets("Tabelle1")
    Set wks2 = wkb2.Sheets("Tabelle1")
    With wks1
       lngLetzte1 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
    End With
    With wks2
       lngLetzte2 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
    End With
    Set rFinde = wks2.Range("A4:A" & lngLetzte2)
    With wks1
       For iLauf = 4 To lngLetzte1
           Set rSuche = rFinde.Find(what:=.Cells(iLauf, 1), LookAt:=xlWhole, LookIn:=xlValues)
           If Not rSuche Is Nothing Then
               rSuche.Offset(0, 4).Copy .Cells(iLauf, 5)
           End If
       Next iLauf
    End With
    End Sub
  4. Makro ausführen: Füge das Makro in den VBA-Editor Deiner Zieldatei ein und führe es aus, um die Werte zu suchen und zu kopieren.


Häufige Fehler und Lösungen

  • Fehler: "nicht gefunden": Wenn kein Wert gefunden wird, überprüfe, ob die Daten in den beiden Dateien identisch formatiert sind (z.B. keine zusätzlichen Leerzeichen).

  • Fehler: Makro funktioniert nicht: Stelle sicher, dass Du das Makro in der richtigen Arbeitsmappe eingefügt hast. Das Makro sollte in der Datei sein, in die Du kopieren möchtest.

  • Fehler: Datei nicht gefunden: Überprüfe den Namen der anderen Excel-Datei und den Pfad in Deinem VBA-Code.


Alternative Methoden

  • Power Query: Eine leistungsstarke Methode, um Daten aus mehreren Excel-Dateien zu kombinieren und zu transformieren. Du kannst Daten aus einer Datei importieren und sie mit einer anderen Datei abgleichen.

  • Excel-Funktionen: Neben SVERWEIS kannst Du auch die Funktionen INDEX und VERGLEICH verwenden, um flexiblere Suchabfragen zu erstellen.


Praktische Beispiele

  1. SVERWEIS Beispiel: Angenommen, Du hast in Datei 1 in Spalte A die Suchbegriffe und in Datei 2 die entsprechenden Werte in Spalte E. Du kannst die folgende Formel verwenden:

    =SVERWEIS(A4; '[AndereDatei.xlsx]Tabelle1'!$A$4:$E$100; 5; FALSCH)
  2. VBA-Makro Beispiel: Nutze das oben angegebene Makro, um durch die Daten in der geöffneten Datei zu navigieren und die Werte zu übernehmen.


Tipps für Profis

  • Verwende benannte Bereiche: Wenn Du mit großen Tabellen arbeitest, kann es hilfreich sein, benannte Bereiche zu verwenden, um die Lesbarkeit Deiner Formeln zu erhöhen.

  • Fehlerbehandlung im VBA: Implementiere Fehlerbehandlungsroutinen in Deinem VBA-Code, um unerwartete Probleme zu erkennen und zu lösen.

  • Regelmäßige Datenpflege: Achte darauf, dass Deine Daten gepflegt und aktuell sind, um die Genauigkeit Deiner Suchen zu gewährleisten.


FAQ: Häufige Fragen

1. Wie kann ich Daten aus einer anderen Excel-Datei suchen und übernehmen?
Du kannst die Funktion SVERWEIS verwenden oder ein VBA-Makro, wie im Tutorial beschrieben.

2. Was mache ich, wenn die Daten nicht gefunden werden?
Überprüfe die Formatierung der Daten und die Schreibweise in beiden Dateien, um sicherzustellen, dass sie übereinstimmen.

3. Kann ich auch mehrere Dateien gleichzeitig durchsuchen?
Ja, mit VBA kannst Du mehrere Dateien durchsuchen, indem Du entsprechende Schleifen und Bedingungen einfügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige