Supportnet Computer
Planet of Tech

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:

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

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.

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

Antwort 5 von coros

Hallo Jürgen,

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

Antwort 7 von coros

Hallo Jürgen,

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: