Wort finden

Bild

Betrifft: Wort finden
von: BamBam
Geschrieben am: 09.05.2015 19:07:58

Hallo zusammen,
ich bin heute auf euch gestoßen und habe ein paar interessante Ansätze für mein Problem gefunden, leider komme ich damit nicht weiter...
Das Problem:
Ich habe eine Excel Tabelle, die mittels eines Macros Daten aus einer anderen Tabelle importiert, dies funktioniert auch soweit sehr gut.
Dann soll das Makro aus dem herüber kopierten Text ein bestimmtes immer vorkommendes Wort finden in abhängigkeit eines Zählers und einer Schleife finden.
Das Wort ist Reise, allerdings steht dann da zb. Reise Deutschland - Italien oder Reise Italien Deutschland etc. Das einzig konstante in diesem Fall ist Reise.
Die Bemerkungen finden sich in den Spalten AD bis AO ab Zeile 15
Wenn das Wort gefunden wurde soll ein Wert aus einer anderen Spalte und derselben Zeile, in eine andere Spalte und der selben Zeile verschoben werden und im Ursprungsort .ClearContents....
Leider kopiert mir das Makro bzw der Code den ich da zusammen gebastelt habe alles aus der Spalte in die andere und nicht nur die Zelle, aus der Zeile wo das Wort Reise gefunden wurde..
Anbei mal ein Code-Schnipsel
letzte = Range("Z65536").End(xlUp).Row
~f~k = letzte 'die letzte Zeile mit einem Wert~f~
~f~s = 15: t = Cells(k, 41).End(xlUp).Row 's ist die Startzeile~f~
~f~For s = 15 To k Step 1~f~
~f~Do Until InStr(Cells(s, 41), "*Reise*") > 0 Or s = k~f~
~f~If InStr(Cells(s, 41), "*Reise*") Then~f~
~f~Cells(s, 26).Copy~f~
~f~Cells(s, 15).PasteSpecial xlPasteValues~f~
~f~Else~f~
~f~If s = k Then~f~
~f~End If~f~
~f~s = s~f~
~f~End If~f~
~f~Loop~f~
Next
Habt Ihr evtl. eine Idee wie ich dieser Problematik Herr werden kann?
Vielen Dank im Vorraus.

Bild

Betrifft: AW: Wort finden
von: Mullit
Geschrieben am: 09.05.2015 21:03:54
Hallo,
dafür bietet sich z.B. die Find-Methode an:

Option Explicit

Public Sub test()
Const SEARCH_STRING As String = "Reise"
Const SEARCH_COLUMN  As Long = 41
Const OLD_COLUMN  As Long = 26
Const NEW_COLUMN As Long = 15
Const START_ROW  As Long = 15
Dim objRange As Range
Dim strFirstAddress As String
Application.ScreenUpdating = False
With ActiveSheet
    With .Cells(START_ROW, SEARCH_COLUMN).Resize( _
        .Cells(.Rows.Count, OLD_COLUMN).End(xlUp).Row - START_ROW + 1, 1)
        Set objRange = .Find(What:=SEARCH_STRING, LookIn:=xlValues, LookAt:=xlPart)
        If Not objRange Is Nothing Then
            strFirstAddress = objRange.Address
            Do
               With ActiveSheet
                   If .Cells(objRange.Row, OLD_COLUMN) <> vbNullString Then
                     .Cells(objRange.Row, NEW_COLUMN) = .Cells(objRange.Row, OLD_COLUMN)
                     .Cells(objRange.Row, OLD_COLUMN).ClearContents
                   End If
               End With
               Set objRange = .FindNext(After:=objRange)
            Loop While Not objRange Is Nothing And objRange.Address <> strFirstAddress
        End If
    End With
End With
Set objRange = Nothing
Application.ScreenUpdating = True
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit

Bild

Betrifft: AW: Wort finden
von: BamBam
Geschrieben am: 10.05.2015 10:33:23
Hallo Mullit,
Danke für den Vorschlag, die Find Methode scheint allerdings nicht zu klappen, denn da überspringt er einfach die Positionen in der Suchspalte meiner Tabelle, in denen das gesuchte Wort vorkommt.
Ich versuchte auch die Find Methode mal mit der Text position zu koppeln, (Left) aber das klappte auch nicht wirklich..
Bin im Moment überfragt woran das liegen könnte.
Gruß BamBam

Bild

Betrifft: AW: Wort finden
von: Gerd L
Geschrieben am: 10.05.2015 11:31:05
Hallo,
lade eine Beispieltabelle hoch - mit Angabe, was "erwischt" werden soll u. was nicht.
Gruß Gerd

Bild

Betrifft: AW: Wort finden
von: BamBam
Geschrieben am: 10.05.2015 15:59:48
Hallo Gerd,
anbei der Link zum Beispiel. https://www.herber.de/bbs/user/97565.xls
Dort in der Spalte AD-AO stehen diverse Daten, dort soll nur der Teil mit Reise ausgelesen werden, die Position ist immer unterschiedlich, nur der Anfang ist gleich.
Zudem soll dann die Zeit in der Spalte Z in die Spalte O verschoben werden, Z also leer, aber es darf immer nur die entsprechende Zeile betrachtet werden, da wo das Wort Reise oder zb Krank vorkommt darf der Wert verschoben werden oder entsprechendes in der Zeile und der Spalte Z eingetragen. bei Krank zb. Zeile und Spalte Z = Krank, Reise entsprechend Zeile und Spalte Z leer, dafür der Wert aus Spalte Z in O usw.
Alle anderen Daten wie mein Import, Wochenendabfragen etc arbeiten problemlos, nur das mit dem Filtern nach diesen Wörtern klappt nicht, weder über inStr noch mittels find hatte ich bisher Erfolg.
Er findet zwar die Werte teilweise aber ignoriert dann die Copy funktion oder überspringt das direkt, und kopiert einfach alle daten.

Bild

Betrifft: AW: Wort finden
von: Daniel
Geschrieben am: 10.05.2015 16:50:48
Hi
verbundene Zellen sorgen immer für verwirrung.
Hebe mal die Zellverbunde in den Spalten AD-AO auf und du erkennst sehr schnell, dass deine Werte in der Spalte AD stehen (Spaltennummer 30), während die anderen Zellen bis Spalte AO leer sind.
deine Suchspalte ist also mit

Const SEARCH_COLUMN  As Long = 41

falsch definiert, du musst in Spalte AD suchen
Const SEARCH_COLUMN  As Long = 30
die verbunden Zellen sind hier doch gar nicht notwendig.
ziehe einfach die Spalte AD auf die richtige Breite und das ganze sieht genauso aus.
Gruß Daniel

Bild

Betrifft: AW: Wort finden
von: BamBam
Geschrieben am: 10.05.2015 20:10:15
Hallo Daniel,
klasse Tipp, hab den Fehler wohl vor lauter strings nicht gesehen,
Habe nun einen Zusatz mit eingebaut, die betroffenen Zellen werden vorher entbunden und nun klappts im ganzen.
Falls jemand eine Idee hat wie ich den kompletten Code verkürzen kann, wäre das nun noch ein i Tüpelchen, aber kein muss.
Danke auch an Mullit für die mühe und den Codeteil mit der Find Methode.
Vielen Dank an alle die mir bei meinem kleinen Problem auf die Sprünge geholfen haben.
Bis zum nächsten Mal
BamBam

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Wort finden"