Supportnet / Forum / Tabellenkalkulation
Excel Suchfunktion für Zeilen
Frage
Schönen guten tage,
Wer könnte mir helfen?
Ich bräuchte eine Makro Suchfunktion die mir aus Spalte E immer die entsprechne gesuchte Nummer/Wort findet und anschliesend in Spalte L kopiert aber in die selbe Zeile wie das gefundene Objekt und danach solle mir die ganze Zeile makiert werden wo in Spalte E das gesuchte Objekt drinne steht. Da nach soll die Makierte Zeile in eine andere Tabelle (Tab_Kontrolle) kopiert werden. Wenn diese Funktion öfters ausgefürt wird dann sollen die Kopierten Zeilen in der Neuentabelle (Tab_Kontrolle)untereinander gespeichert werden.
Bitte Bitte ich brauch es dringend und selber bin ich zu blöd es in Microsoft Visual Basic zu erstellen.
Wer kann das? Ihr wärt mir eine große hilfe ich selber sitze jetzt schon drei tage drann und bin langsam am verzeifeln.
Antwort 1 von ypsilon
hi,
wenn du uns vorher noch verraten hättest wo der suchbegriff herkommt dann hättest du jetzt ein komplettergebnis
so musst du mit der "hälfte" leben
ins klassenmodul der suchtabelle:
Sub finden()
Dim Wert
Dim loletzte As Long
Wert = "Test" ´Wert = "Was auch imer du finden willst und wo es herkommt"
loletzte = IIf(IsEmpty(Worksheets("Tab_Kontrolle").Range("A65536")), Worksheets("Tab_Kontrolle").Range("A65536").End(xlUp).Row, 65536) + 1
Set c = Columns(5).Find(Wert, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Cells(c.Row, 12) = c.Value
Rows(c.Row).Copy Destination:=Worksheets("Tab_Kontrolle").Rows(loletzte)
loletzte = loletzte + 1
Set c = Columns(5).FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub
cu Micha
wenn du uns vorher noch verraten hättest wo der suchbegriff herkommt dann hättest du jetzt ein komplettergebnis
so musst du mit der "hälfte" leben
ins klassenmodul der suchtabelle:
Sub finden()
Dim Wert
Dim loletzte As Long
Wert = "Test" ´Wert = "Was auch imer du finden willst und wo es herkommt"
loletzte = IIf(IsEmpty(Worksheets("Tab_Kontrolle").Range("A65536")), Worksheets("Tab_Kontrolle").Range("A65536").End(xlUp).Row, 65536) + 1
Set c = Columns(5).Find(Wert, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Cells(c.Row, 12) = c.Value
Rows(c.Row).Copy Destination:=Worksheets("Tab_Kontrolle").Rows(loletzte)
loletzte = loletzte + 1
Set c = Columns(5).FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub
cu Micha
Antwort 2 von Hellchampion
Ich habe in der Spalte L immer Auftragsnummern (L-3082947385) diese sollen dann über eine Suchfunktion abgerufen werden. Ich habe so ca. 500 Auftragsnummern. Die sollen dann über eine Suchfunktion gesucht werden. Das weitere steht ja oben.
Wenn noch fragen sind dann stellt sie mir.
Schon mal herzlichen dank für die hilfe.
Hellchampion.
Wenn noch fragen sind dann stellt sie mir.
Schon mal herzlichen dank für die hilfe.
Hellchampion.
Antwort 3 von Hellchampion
den Wert will ich selber eingegeben. Es soll ein Fenster sich öffnen wo dann drinne steht "Bitte die gesuchte Auftragsnummer eingeben" Ich gib dann nicht die Ganze Auftragsnummer ein sondern nur die letzten drei oder vier Zahlen ein und dann wie beschriebem Zelle kopieren wo die Auftragsnummer drinne steht. Diese dann in Spalte L und in die selbe Zeile und dann die ganze Zeile Kopieren und in Tab_Kontrolle speichern.
Ich hoffe das reicht an Infos
Ich hoffe das reicht an Infos
Antwort 4 von ypsilon
sorry, keine weitere hilfe von mir
ich beantworte GRUNDSÄTZLICH keine crosspostings
cu Micha
ich beantworte GRUNDSÄTZLICH keine crosspostings
cu Micha
Antwort 5 von Hellchampion
Ok nochmals danke ich habe mir jetzt noch eine eigene Suchfunktion geschrieben wo ich selber die Auftragsnummer eingeben kann. Das Modul was du mir gebastelt hast hat einwand frei funktioniert.
Noch mal vielen dank.
Sub finden()
Dim Auftragsnummer As String
Dim loletzte As Long
Range("L1").Select
ActiveCell.FormulaR1C1 = "Kontrolle"
Range("I1").Select
Selection.Copy
Range("L1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Interior.ColorIndex = 3
Columns("L:L").Select
Selection.ColumnWidth = 13.71
Auftragsnummer = InputBox("Die Auftragsnummer eingeben." & _
Chr(10) & _
"Es wird die Auftragsnummer gesucht.", _
"Auftragsnummer suchen")
Columns("E:E").Select
Selection.Find(what:=Auftragsnummer, after:=ActiveCell, LookIn:=xlValues, lookat _
:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False).Activate
If Err <> 0 Then
MsgBox "Kann die Auftragsnummer nicht finden " & Auftragsnummer
End
End If
If Auftragsnummer = False Then
Range("A1").Select
End
End If
loletzte = IIf(IsEmpty(Worksheets("Tab_Kontrolle").Range("A65536")), Worksheets("Tab_Kontrolle").Range("A65536").End(xlUp).Row, 65536) + 1
Set c = Columns(5).Find(Auftragsnummer, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Cells(c.Row, 12) = c.Value
Rows(c.Row).Copy Destination:=Worksheets("Tab_Kontrolle").Rows(loletzte)
loletzte = loletzte + 1
Set c = Columns(5).FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub
Aber leider Überschreibt er mir immer die Daten in Tab_Kontrolle, wenn ich das Makro ein zeites mal ausführe.
Frage müßte ich dann noch eine Counter (Zähler ) einbauhen, das meine daten die in der Tab_Kontrolle liegen nicht überschrieben werden? So das er mir die Tab_Kontrolle Tabelle immer weite führt undnicht überschreibt? Wie kann ich das denn noch realiesieren?
Vielen dank für die Hilfe
Hell
Noch mal vielen dank.
Sub finden()
Dim Auftragsnummer As String
Dim loletzte As Long
Range("L1").Select
ActiveCell.FormulaR1C1 = "Kontrolle"
Range("I1").Select
Selection.Copy
Range("L1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Interior.ColorIndex = 3
Columns("L:L").Select
Selection.ColumnWidth = 13.71
Auftragsnummer = InputBox("Die Auftragsnummer eingeben." & _
Chr(10) & _
"Es wird die Auftragsnummer gesucht.", _
"Auftragsnummer suchen")
Columns("E:E").Select
Selection.Find(what:=Auftragsnummer, after:=ActiveCell, LookIn:=xlValues, lookat _
:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False).Activate
If Err <> 0 Then
MsgBox "Kann die Auftragsnummer nicht finden " & Auftragsnummer
End
End If
If Auftragsnummer = False Then
Range("A1").Select
End
End If
loletzte = IIf(IsEmpty(Worksheets("Tab_Kontrolle").Range("A65536")), Worksheets("Tab_Kontrolle").Range("A65536").End(xlUp).Row, 65536) + 1
Set c = Columns(5).Find(Auftragsnummer, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Cells(c.Row, 12) = c.Value
Rows(c.Row).Copy Destination:=Worksheets("Tab_Kontrolle").Rows(loletzte)
loletzte = loletzte + 1
Set c = Columns(5).FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub
Aber leider Überschreibt er mir immer die Daten in Tab_Kontrolle, wenn ich das Makro ein zeites mal ausführe.
Frage müßte ich dann noch eine Counter (Zähler ) einbauhen, das meine daten die in der Tab_Kontrolle liegen nicht überschrieben werden? So das er mir die Tab_Kontrolle Tabelle immer weite führt undnicht überschreibt? Wie kann ich das denn noch realiesieren?
Vielen dank für die Hilfe
Hell

