Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Untersuche ob Wort aus einer Spalte in der Zelle

Untersuche ob Wort aus einer Spalte in der Zelle
09.01.2013 20:51:57
CHristian
Guten Abend! Vermutlich leicht zu lösen aber ich habe schon sehr lange nicht mehr mit Excel gearbeitet.....
DIe Aufgabe die ich lösen muß ist wie folgt:
In Zelle B5423 steht ein Text der überprüft werden soll - nach folgenden Kriterien:
WEnn irgendwo im Text der Zelle B5423 eines der Wörter aus dem Zellenbereich $L$1:$L$70 steht gebe in Zelle A5423 den entsprechenden ZeilenWert aus dem Zellenbereich $M$1:$M$70 aus.
Mit VBN vermutlich leicht zu lösen.... kenn mich aber nicht damit aus ...
Mit SVerweis bin ich im Kreis gegangen....
Mit =WENN(ZÄHLENWENN(;;;) ebenfalls ......
Hier ein Beispiel mit DAten aus der Spalte L und M:
Billa Lebensmittel
Lutz Haushalt
Kelag Energie
ÖBB Transport
und dem zu überprüfenden Text aus Zelle B5423: "Vertrag 3845 Kelag"
ERgebnis in Zelle A5423 soll sein: Energie
Ich möchte mich bereits im Vorfeld ganz herzlich für jeden Hinweis zur Lösung meines Problemes bedanken!!!!!!!!!
LG CHristian

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Untersuche ob Wort aus einer Spalte in der Zelle
09.01.2013 21:09:39
Peter
Hallo CHristian,
per Makro z. B. so:
Option Explicit
Public Sub Suchen()
Dim lZeile  As Long
With ThisWorkbook.Worksheets("Tabelle2")
For lZeile = 1 To .Cells(.Rows.Count, 12).End(xlUp).Row
If InStr(.Range("B5423").Value, .Range("L" & lZeile).Value) > 0 Then
.Range("A5423").Value = .Range("M" & lZeile).Value
Exit For
End If
Next lZeile
End With
End Sub

Gruß Peter

AW: Untersuche ob Wort aus einer Spalte in der Zelle
09.01.2013 21:12:10
Peter
Hallo CHristian,
jetzt könnte man Dich allerdings fragen, was geschehen soll, wenn auch andere Werte aus Spalte L zutreffen sollten?
Mein Makro hört nach dem ersten gefundenen Wort auf weiter zu suchen.
Gruß Peter

Anzeige
AW: Untersuche ob Wort aus einer Spalte in der Zelle
09.01.2013 21:28:41
CHristian
Hallo Peter!
Ich bin soeben drauf gekommen, dass ich etwas wichtiges vergessen habe in die Anfrage zu schreiben:
DIe gleiche Überprüfung soll nach Import von Daten für beliebig viel weitere Daten aus der Spalte B beginnend mit B5423 bis zB vielleicht einmal B9999 gemacht werden.
Zu Deinem Makro Hinweis dass die Suche nach dem ersten Treffer aufhört: das ist eh ganz ganz super wenn nach dem ersten Treffer eine entsprechende Ausgabe kommt!!!!!

AW: Untersuche ob Wort aus einer Spalte in der Zelle
09.01.2013 23:06:07
CHristian
Hallo Peter!
Ich Danke für das Makro. Das Makro habe ich mit einigen kleinen Anpassungen in einer TEstdatei getestet ... ist ja super ....... herzlichen Dank ...... wenn ich nun in Spalte B in Folgezeilen noch viele weitere Zellen importiere die ich auch genauso überprüfen möchte - hättest Du dafür auch eine elegante Lösung? Mit Makros habe ich zuletzt vor 18 Jahren gearbeitet aber nie welche geschrieben sondern immer nur aufgezeichnet .......

Anzeige
AW: Untersuche ob Wort aus einer Spalte in der Zelle
09.01.2013 23:59:08
CHristian
Hallo Peter!
Ich Danke für das Makro. Das Makro habe ich mit einigen kleinen Anpassungen in einer TEstdatei getestet ... ist ja super ....... herzlichen Dank ...... wenn ich nun in Spalte B in Folgezeilen noch viele weitere Zellen importiere die ich auch genauso überprüfen möchte - hättest Du dafür auch eine elegante Lösung? Mit Makros habe ich zuletzt vor 18 Jahren gearbeitet aber nie welche geschrieben sondern immer nur aufgezeichnet .......

AW: Untersuche ob Wort aus einer Spalte in der Zelle
10.01.2013 08:41:28
Klaus
Hi CHristian,
ich spring mal ein, das musst du natürlich einfach anpassen.
Option Explicit
Public Sub StarteSuchen()
dim l as long
'Ergebnisse für B5423, B5450 und B5500
Call Suchen(5423)
Call Suchen(5450)
Call Suchen(5500)
'Ergebnisse für B5600 bis B5699
for l = 5600 to 5699
call Suchen(l)
next l
end Sub
Public Sub Suchen(lZeile as long)
Dim lZeile  As Long
With ThisWorkbook.Worksheets("Tabelle2")
For lZeile = 1 To .Cells(.Rows.Count, 12).End(xlUp).Row
If InStr(.Range("B5423").Value, .Range("L" & lZeile).Value) > 0 Then
.Range("A" & lZeile).Value = .Range("M" & lZeile).Value
Exit For
End If
Next lZeile
End With
End Sub

Wenn ab B5423 immer n Zeilen importiert werden, wobei n varriert aber keine leeren Zeilen zwischen B5423 und B5423+n vorkommen und B5423+n die letzte genutzte Zeile der Tabelle ist, gehts auch vollautomatisch:
Public Sub StarteSuchen()
dim l as long
dim lRow as long
lrow = activesheet.cells(rows.count,1).end(xlup).row
for l = 5423 to lrow
call Suchen(l)
next l
end Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Untersuche ob Wort aus einer Spalte in der Zelle
10.01.2013 16:03:32
CHristian
Hallo Klaus! Hallo Peter!
Ich bin Dir (Euch) zu großem Dank verplichtet!!! Das ist ja absolut erstaunlich!
Bin zum ersten Mal im meinem Leben in einem Forum wie diesem gelandet und total überrascht!
Trotzdessen ich Null Ahnung von VBA habe, habe ich nach ein wenig Überlegung wie folgt das Makro abgewandelt hat es funktioniert total perfekt!
FRAGE: WEnn ich die Const e beim Starten des Makros über eine Eingabebox definieren möchte - kannst Du mir ein Scribt senden für eine Box Eingabe?
Hier meine Modifikation von Deinem Vorschlag die ich nun erfolgreich einsetze und nach jedem neuen Datenimport von externen Daten "e" ändern muß:
Public Sub StarteSuchen()
Const e = 8943
Dim z As Long
For z = e To e + 100
Call Suchen(z)
Next z
End Sub
Public Sub Suchen(z As Long)
Dim lZeile  As Long
With ThisWorkbook.Worksheets("Ab 30.3.2000")
For lZeile = 1 To .Cells(.Rows.Count, 12).End(xlUp).Row
If InStr(.Range("C" & z).Value, .Range("L" & lZeile).Value) > 0 Then
.Range("B" & z).Value = .Range("M" & lZeile).Value
Exit For
End If
Next lZeile
End With
End Sub

Anzeige
AW: Untersuche ob Wort aus einer Spalte in der Zelle
10.01.2013 21:19:57
Klaus
Hi CHristian,
ich schreib von meinem Netbook, da ist kein Excel drauf. Der folgende, ungetestete Script sollte trotzdem funktionieren *aus.Ärmel.zieh*

Public Sub StarteSuchen()
'Const e = 8943 'das ist leider grundfalsch! Was soll denn das "Const" davor?
dim z as long
Dim e As Long   'stattdessen dimensioniere als long oder integer
'der Wert kommt aus einer Inputbox, da nehmen wir die Standardinputbox von Excel
e = inputbox("Bitte Wert eingeben!")
'kein Grund das Rad neu zu erfinden
For z = e To e + 100
Call Suchen(z)
Next z
End Sub
Zu dimensionieren von Variablen schreib ich jetzt nichts, das wird an anderer Stelle ausführlich behandelt. Bei Interesse kram ich mal einen Link raus. (das ist auch nicht das allerwichtigste was man zum VBA-Scripten braucht, theoretisch gehts sogar ganz ohne ... aber es hat nur Vorteile, da ein paar Regeln zu beachten)
Grüße,
Klaus M.vdT.
Anzeige

349 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige