PDA

Vollständige Version anzeigen : String suchen, ausschneiden, kopieren


sinn.sucher
19.03.2009, 12:40
Hallo Freunde des gepflegten VBA programmierens:)

Kleine Testaufgabe für die Cracks.

Ich habe eine Tabelle mit mehreren Zeichenfolgen. Einige von diese (Spalten A-C), wie z.B.:

A: XX0021000006755XXXRE1P B: 15.03.2009 01:00 C: 2054

sollen gesucht, ausgescnutten und in ein neues Blatt kopiert werden.

Könnt Ihr mir einen VNB Code dafür bitte aufzeigen? So in etwa:



Sub suchen()

Cells.Select
Cells.Find(What:="XX0021000006755XXXRE1P", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
Range Cells.Select
Selection.Cut
Workbooks.Add
ActiveSheet.Paste
End Sub



Danke und liebe Grüsse, Britta

R J
19.03.2009, 15:05
Hi Britta,

so vielleicht?


Sub Suche(Suchbegriff as String, Zelle as string, Quellblatt as String)
dim sAdr$

sadr = Cells.Find(What:=Suchbegriff, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Address

Range(sadr) = ""
Workbooks.Add
ActiveSheet.Range(sadr) = sheets(Quellblatt).range(sadr)
End Sub

Und aufrufen kannst Du das ganze so:

Sub Kopieren()
'Suchbegriff über eine Inputbox eingeben lassen... Standardwert aktueller Zellwert
dim sSuche = Inputbox("Bitte Suchbegriff eingeben","Wonach soll gesucht werden",Activecell.value)

Suche sSuche, Activecell.Address, Activesheet.name

jinx
19.03.2009, 17:38
Moin, Ralf,

Leerzellen braucht man aber nicht zu kopieren... :grins:

Function Suche(Suchbegriff As String, Zelle As String, Quellblatt As String)
Dim sAdr As String

sAdr = Cells.Find(What:=Suchbegriff, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False).Address
Workbooks.Add
ActiveSheet.Range(sAdr) = ThisWorkbook.Sheets(Quellblatt).Range(sAdr)
ThisWorkbook.Sheets(Quellblatt).Range(sAdr) = vbNullString
End Function

Sub Kopieren()
'Suchbegriff über eine Inputbox eingeben lassen... Standardwert aktueller Zellwert
Dim sSuche As String, var As Variant
sSuche = InputBox("Bitte Suchbegriff eingeben", "Wonach soll gesucht werden", ActiveCell.Value)
var = Suche(sSuche, ActiveCell.Address, ActiveSheet.Name)
End Sub

sinn.sucher
20.03.2009, 08:15
Hallo Ihr Beiden...

super lieb die schnellen Antworten...

wenn ich aber im Vorfeld weiss, dass es nur bestimmte Zeichenfolgen sein können, kann ich diese nicht alle auf einmal anhand einer Hilfstabelle abfragen lassen? In dem oben stehenden Code, muss ich dies einzeln auswählen, welches einen hohen manuellen Aufwand hat..


Danke und liebe Grüsse, Britta

jinx
20.03.2009, 17:15
Moin, Britta,

natürlich ist das möglich: mit einer Schleife statt mit einer Abfrage den Suchbegriff an die Funktion übergeben.

Sub Kopieren()
'Suchbegriff über eine Inputbox eingeben lassen... Standardwert aktueller Zellwert
Dim sSuche As String, var As Variant
Dim lngCounter As Long

For lngCounter = 2 To 10
sSuche = Cells(lngCounter, "B").Value
var = Suche(sSuche, ActiveCell.Address, ActiveSheet.Name)
Next lngCounter
End Sub
Wobei hier davon ausgegangen wird, dass sich alles auf einer Tabelle abspielt...

sinn.sucher
31.03.2009, 14:55
Hey Jinx

Sorry für die wirklich verspätete Rückmeldung, aber ich musste das Bett hüten:-(

Noch mal zurück zum Thema:

Benutze ich nun den aktuellen Code, bekomme ich den Screen als Fehlermeldung.

Hier noch ein weitererer Alternativ Code:



Private Sub Suchen()

Dim Suche(1, 1) As String
Dim i As Integer



Suche(0, 1) = "Exxxx2752831KG2P"
Suche(1, 1) = "Exxxx2752831KGL2"


For i = LBound(Suche, 2) To UBound(Suche, 2)

Cells.Replace What:=Suche(0, i), Replacement:= _
Suche(1, i), LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase _
:=False, SearchFormat:=False, ReplaceFormat:=False

Next i

End Sub

Das funktioniert gut jedoch möchte ich diesen abwandeln.
Und zwar kann es sein dass in

Spalte A: Exxxx2752831KG steht
und in

Spalte B: 2P

Jetzt soll er beide Spalten nach diesen Kriterein suchen.
Entscheidend hierbei ist jedoch stets der Wert in Spalte B, in diesem Fall 2P
Das Ergebnis soll sein:
Schaue auf Spalte B, steht dort 1P oder 2P ... füge dem String in Spalte A einen Wert zu:
Bei 1P = L1 ; 2P = L2
Findet er jedoch in Spalte B den Wert 1R oder 2R, lösche alle Spalten der betreffenden Zeile :-)) hui ob das jemand versteht?

Soll ich ein Excel file anhängen mit Vorher - Nachher?:p

Danke und liebe Grüsse, Britta

sinn.sucher
02.04.2009, 10:14
push up:-)

...wenn doch keine Lösung gefunden werden kann, dann formuleire ich lieber ein neues Thema, oder?

Liebe Grüsse , Britta

jinx
02.04.2009, 17:52
Moin, Britta,

vielleicht kannst Du eine Mappe mit einigen typisierten Daten zusammenstellen und darin Soll und Ist veranschaulichen - normalerweise kann der Suchbereich eingeschränkt werden auf Columns statt auf Cells, die Fundstelle als Objekt gesetzt werden und dann weiter ausgewertet werden.