Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
932to936
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Teilbegriff suchen

Teilbegriff suchen
18.12.2007 10:11:00
Gregor
Hallo zusammen
Ich suche in Spalte 2 einen Teilbegriff
Folgende Prozedur findet nicht alle Begriffe mit beispielsweise "Muster":
For Each c In Worksheets(Quellblatt).Columns(2).Cells
If c.Value Like "*" & "Muster" & "*" Then
Zeile = c.Row
End If
Next
Gibt es eine andere oder abgeänderte Möglichkeit, dass ich alle Begriffe mit zB. Muster finde?
Danke und Gruss
Gregor

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teilbegriff suchen
18.12.2007 10:22:07
IngGi
Hallo Gregor,
versuch's mal so:


For Each c In Worksheets(Quellblatt).Columns(2).Cells
If InStr(1, c.Value, "Muster") > 0 Then
Zeile = c.Row
End If
Next

Gruß Ingolf

Anzeige
AW: Teilbegriff suchen
18.12.2007 10:36:00
Gregor
Ingolf
Vielen Dank, leider erziele ich damit kein besseres Ergebnis.
Gregor

AW: Teilbegriff suchen
18.12.2007 10:40:27
Rudi
Hallo,
dann lad doch mal die Mappe hoch.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Teilbegriff suchen
18.12.2007 11:00:55
Gregor
Hallo
Die Mappe ist zu gross, über 5 GB.
Konkret werden Ortsnamen mit unterschiedlicher Schreibwise vom Zielblat in Quellblatt gesucht.
Beispiele:
Zielblatt
----------
Verrieres, Les
Locle, Le
Heutte, La
Frinvillier-Taubenloch
Corcelles-Peseux
usw.
Quellblatt
------------
Les Verrieres
Le Locle
La Heutte
Frinvillier-T.
Corcelles-P
Gregor

Anzeige
AW: Teilbegriff suchen
18.12.2007 11:36:40
Rudi
Hallo,
5GB?
Es wäre besser, wenn du zumindest mal den echten Suchcode hier eistellst.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Teilbegriff suchen
18.12.2007 11:53:48
Gregor
Hallo
Das mache ich natürlich gerne:

Sub Suchen()
Application.ScreenUpdating = False
Dim Wert As Variant, Ort As Variant
Dim Zelle As Variant, Zielblatt As Variant, Quellblatt As Variant
Dim intLastRow As Double, Beginn As Double, Zeile As Double
Zielblatt = "Master Datei"
Quellblatt = "Ausrüstung"
Worksheets(Zielblatt).Select
intLastRow = Cells(Rows.Count, 1).End(xlUp).Row
For Beginn = 4 To intLastRow
Ort = Worksheets(Zielblatt).Cells(Beginn, 1).Value
If Ort  "" Then
For Each c In Worksheets(Quellblatt).Columns(2).Cells
If c.Value Like "*" & Ort & "*" Then
' If InStr(1, c.Value, Ort) > 0 Then
Zeile = c.Row
Wert = Worksheets(Quellblatt).Cells(Zeile, 7).Value
If Wert = 1 Then
Worksheets(Zielblatt).Cells(Beginn, 40).Value = "ja"
Else
Worksheets(Zielblatt).Cells(Beginn, 40).Value = "nein"
Worksheets(Zielblatt).Cells(Beginn, 40).Font.ColorIndex = 3
Worksheets(Zielblatt).Cells(Beginn, 40).Font.Bold = True
End If
End If
Next
End If
Next Beginn
Application.ScreenUpdating = True
End Sub


Die Ortschaft wird vom Zielblatt übernommen und ändert mit der For-Schlaufe.
Gregor

Anzeige
AW: Teilbegriff suchen
18.12.2007 12:15:49
Rudi
Hallo,
das kann nicht klappen.
du suchst z.B. nach *Verierres, Les*
Das kommt aber nicht vor.
*Verierres* hingegen schon.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Teilbegriff suchen
18.12.2007 12:16:00
firmus
Hi Gregor,
lese doch die helpfile zu Instr nach. Der DRITTE Parameter legt die Vergleichsart fest.
z.b. Binärvergleich: wirklich identische Schreibweise HAmburg ist ungleich Hamburg.
Gruß
Firmus

AW: Teilbegriff suchen
18.12.2007 12:28:40
Daniel
Hi
ich sehe jetzt keinen Grund, warum nicht alle gefunden werden sollen.
Hast du mal ein Beispiel, welcher Ort nicht gefunden wurde (dh. beide Werte, den Eingabewert und den Ort, der gesucht, aber nicht gefunden wurde)
Was mir spontan als Grund einfallen würde, wäre unterschiedliche Gross/Kleinschreibung, das könntest du aber bspw mit

If LCase(c.Value) Like "*" & LCase(Ort) & "*" Then


ausgleichen.
allerdings frage ich mich, ob du die Aufgabe nicht einfach über die SVERWEIS-Funktion und ne bedingte Formatierung lösen könntest, auch beim SVerweis kann man mit den Platzhaltern arbeiten.
Trotzdem musst du dir darüber im klaren sein, daß
wenn du "Locle, Le" mit "Le Locle" suchen willst, auch ein "*Le Locle*" nie zu einem Treffer führen kann, sondern immer nur ein "*Locle*"
Gruß, Daniel

Anzeige
AW: Teilbegriff suchen
18.12.2007 12:34:39
Gregor
Hallo
Heisst das, diese unterschiedlichen Begriff-Werte können nicht gefunden werden?
Mit der InStr-Funktion komme ich nicht klar, diese Funktion gibt ja bloss Positionen der gefunden Zeichen zurück.
Gregor

AW: Teilbegriff suchen
18.12.2007 12:49:00
Rudi
Hallo,
genau das heißt es.
Mit Instr() kommst du auch nicht weiter.
Du könntest aber z.B. nur mit den ersten 5 Zeichen des Suchbegriffs vergleichen.
Ort = left(Worksheets(Zielblatt).Cells(Beginn, 1).Value,5)
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Teilbegriff suchen
18.12.2007 12:51:54
Gregor
Vielen Dank, ich werd's versuchen.
Gregor

Anzeige
AW: Teilbegriff suchen
18.12.2007 13:03:13
Daniel
Hi
ja, das ist richtig
aber wenn die Zeichenkette nicht gefunden wird, dann ist der Wert der Position 0
und du kannst Instr durchaus in diesem Sinn verwenden.
außderdem hab ich mal irgendwo gelesen, daß

if instr(Text1, Suchtext) > 0


schneller sei als


if Text1 like "*" & Suchtext "*" then


Gruß, Daniel

AW: Teilbegriff suchen
18.12.2007 13:11:00
Rudi
Hallo,
er wird aber niemals *test Daniel* in Daniel, test finden.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Teilbegriff suchen
18.12.2007 14:07:13
Daniel
jo,
aber das wurde ja schon mehrfach hier im Thread erwähnt, so daß ich darauf nicht nochmal eingehen wollte
Gruß, Daniel

AW: Teilbegriff suchen, Beispiel
18.12.2007 16:12:00
Rudi
Hallo,
mal ein Bsp.:

Sub tt()
Dim vntQ, vntZ, vntMatch()
Dim iQ, iZ, i As Integer
With Sheets("Quelle")
vntQ = .Range(.Cells(1, 1), .Cells(65536, 1).End(xlUp))
End With
With Sheets("Ziel")
vntZ = .Range(.Cells(1, 1), .Cells(65536, 1).End(xlUp))
End With
ReDim vntMatch(1 To UBound(vntZ))
For iQ = 1 To UBound(vntQ)
For iZ = 1 To UBound(vntZ)
For i = Len(vntZ(iZ, 1)) To 3 Step -1
If InStr(1, vntQ(iQ, 1), Left(vntZ(iZ, 1), i), vbTextCompare) > 0 Then
vntMatch(iZ) = vntQ(iQ, 1)
Exit For
End If
Next
Next
Next
With Sheets("Ziel")
.Columns(2).ClearContents
.Range(.Cells(1, 2), .Cells(UBound(vntZ), 2)) = WorksheetFunction.Transpose(vntMatch)
End With
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Teilbegriff suchen, Beispiel
18.12.2007 19:19:00
Gregor
Hallo Rudi
Vielen Dank, konnte erst jetzt wieder reinschauen.
Das ist ein interessanter Ansatz, obwohl für mich zu kompliziert, um das Vorgehen genau zu verstehen.
Klappt bei einigen Ortschaften ganz gut. Namen mit La statt Les erfasst es nicht, dh. wenn ich
For i = Len(vntZ(iZ, 1)) To 3 Step -1 auf For i = Len(vntZ(iZ, 1)) To 2Step -1 setze, gibt es einige Fehlinterpretationen.
Dennoch vielen Dank
Gregor

AW: Teilbegriff suchen, Beispiel
18.12.2007 22:49:00
Daniel
Hi
naja Fehlinterpretationen wird es bei der Methode immer geben, Rechtschreibfehler sind ja auch noch möglich.
wenns eindeutig werden soll, solltet ihr auf Postleitzahlen anstelle von Ortsnamen umstellen.
vielleicht noch ein Denkansatz:
1. Kommas im Ortsnamen über REPLACE entfernen
2. den Ortsnamen per SPLIT-Funktion in seine Bestandzeile zerlegen und dann nach dem längsten Teilbegriff suchen und vergleichen.
Gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige