Supportnet / Forum / Tabellenkalkulation
Werte über 2 Excel-Dateien suchen lassen und Ausgeben
Frage
Hallo,
da ich recht neu hier bin und meine Programmierkentnisse sehr bescheiden sind schreibe ich einfach drauf los. In der Hoffnung das es verständlich ist.
Ich habe 2 Excel Dateien "Katalogartikelnummer" und "Lieferantenverzeichnis".
Ich möchte in der Datei "Katalogartikelnummer" mit der Funktion Suchen einen Wert eingeben können und diesen in Spalte B suchen lassen.
Wenn dieser Wert gefunden wurde, soll der Wert aus der gleichen Zeile aber in Spalte F als Suchkriterium für Datei "Lieferantenverzeichnis" in Spalte A genommen werden.
Wird dieser Wert in Spalte A gefunden, so soll entweder die Zeile farblich markiert werden oder besser das die ganze Zeile in ein neues Blatt geschrieben wird.
Ich habe das ganze schon über die Makro Aufzeichnung gemacht, bekomme es aber nicht hin das mir die Suchmaske zu Eingabe des Wertes angezeigt wird.
Antwort 1 von coros
Hallo liveback,
mit dem Suchendialogfenster wirst Du nichts anfangen können, da dort nach Eingabe Deines Suchbegriffes der Begriff nicht an Dein Makro übergeben wird.
Zur Eingabe eines Suchbegriffs musst Du die InputBox-Methode verwenden. Der Befehl dazu sieht wie folgt in dem Beispielmakro aus:
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
mit dem Suchendialogfenster wirst Du nichts anfangen können, da dort nach Eingabe Deines Suchbegriffes der Begriff nicht an Dein Makro übergeben wird.
Zur Eingabe eines Suchbegriffs musst Du die InputBox-Methode verwenden. Der Befehl dazu sieht wie folgt in dem Beispielmakro aus:
Option Explicit
Sub Suchen()
Dim Search As Variant
Search = InputBox("Bitte Suchbegriff eingeben")
If Search = "" Or Search = False Then Exit Sub
'Anstelle der nachfolgenden MessageBox ab hier Dein aufgezeichnetes Makro
MsgBox Search
End Sub
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von liveback
Hallo coros,
danke für die schnelle antwort. ich habe den Code eingefügt und das Eingabefenster erscheint auch. Nur durch die Makroaufzeichnung sind hier ja feste Werte im Code vorhanden die ich jetzt mit Variablen belegen muß. Der gesuchte Wert ist ja nicht immer der gleiche. Kannst du mir helfen bzw. sagen wie so etwas im Programmcode aussieht.
mfg
Jürgen
danke für die schnelle antwort. ich habe den Code eingefügt und das Eingabefenster erscheint auch. Nur durch die Makroaufzeichnung sind hier ja feste Werte im Code vorhanden die ich jetzt mit Variablen belegen muß. Der gesuchte Wert ist ja nicht immer der gleiche. Kannst du mir helfen bzw. sagen wie so etwas im Programmcode aussieht.
mfg
Jürgen
Antwort 3 von coros
Hallo Jürgen,
Wo ist Dein VBA-Code?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Wo ist Dein VBA-Code?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von liveback
Hallo Oliver,
hier der Aufgezeichnete VBA-Code:
Sub Nummern_Suchen()
'
' Nummern_Suchen Makro
'
Columns("B:B").Select
Selection.Find(What:="4435611365", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Range("F31").Select
Selection.Copy
Sheets("Tabelle2").Select
Selection.Find(What:="446084", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Rows("1011:1011").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Tabelle3").Select
Rows("1:1").Select
ActiveSheet.Paste
End Sub
mfg
Jürgen
hier der Aufgezeichnete VBA-Code:
Sub Nummern_Suchen()
'
' Nummern_Suchen Makro
'
Columns("B:B").Select
Selection.Find(What:="4435611365", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Range("F31").Select
Selection.Copy
Sheets("Tabelle2").Select
Selection.Find(What:="446084", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Rows("1011:1011").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Tabelle3").Select
Rows("1:1").Select
ActiveSheet.Paste
End Sub
mfg
Jürgen
Antwort 5 von coros
Hallo Jürgen,
nachfolgendes Makro sollte das machen, was Du Dir vorgestellt hast. Tausche es gegen Dein aufgezeichnetes Makro aus.
Ich habe das Makro nicht getestet, da ich keine Lust habe, mir eine Beispieldatei zu erstellen, die so ist wie Deine. Sollte aber funktionieren. Wenn nicht, melde Dich bitte.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nachfolgendes Makro sollte das machen, was Du Dir vorgestellt hast. Tausche es gegen Dein aufgezeichnetes Makro aus.
Option Explicit
Sub Nummern_Suchen()
Dim Search As Variant
Dim SearchNew As Variant
Dim iFind As Long
Dim lastRow As Long
Application.ScreenUpdating = False
Search = InputBox("Bitte Suchbegriff eingeben")
If Search = "" Or Search = False Then Exit Sub
lastRow = Range("B65536").End(xlUp).Row
For iFind = 1 To lastRow
If Cells(iFind, 2).Text = Search Then
SearchNew = Cells(iFind, 6).Text
Exit For
End If
Next
lastRow = Sheets("Tabelle2").Range("A65536").End(xlUp).Row
For iFind = 1 To lastRow
If Sheets("Tabelle2").Cells(iFind, 1).Text = SearchNew Then
Sheets("Tabelle2").Rows(iFind).Copy
Sheets("Tabelle3").Cells(Sheets("Tabelle3").Range("A65536").End(xlUp).Offset(1, 0).Row, 1).PasteSpecial
Exit For
End If
Next
End Sub
Ich habe das Makro nicht getestet, da ich keine Lust habe, mir eine Beispieldatei zu erstellen, die so ist wie Deine. Sollte aber funktionieren. Wenn nicht, melde Dich bitte.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von liveback
Hallo Oliver,
klappt super.
Danke für deine Unterstützung.
Eine Frage hätte ich noch, wie ist es denn wenn ich keine Ausgabe auf Tabelle 3 möchte, sondern nur die gefundene Zeile in Tabelle 2 farbig markieren möchte?
mfg
Jürgen
klappt super.
Danke für deine Unterstützung.
Eine Frage hätte ich noch, wie ist es denn wenn ich keine Ausgabe auf Tabelle 3 möchte, sondern nur die gefundene Zeile in Tabelle 2 farbig markieren möchte?
mfg
Jürgen
Antwort 7 von coros
Hallo Jürgen,
dann lösche in dem Makro die Zeilen
und trage stattdessen die Zeile
dort ein. Diese färbt die gefundene Zeile in rot.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
dann lösche in dem Makro die Zeilen
Sheets("Tabelle2").Rows(iFind).Copy
Sheets("Tabelle3").Cells(Sheets("Tabelle3").Range("A65536").End(xlUp).Offset(1, 0).Row, 1).PasteSpecial
und trage stattdessen die Zeile
Sheets("Tabelle2").Rows(iFind).Interior.ColorIndex = 3
dort ein. Diese färbt die gefundene Zeile in rot.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 8 von liveback
Hallo Oliver,
vielen dank für Deine Unterstützung.
mfg
Jürgen
vielen dank für Deine Unterstützung.
mfg
Jürgen