Clever-Excel-Forum

Normale Version: Excel vba: Suchmechanismus
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7 8 9
Hallo zusammen,
ich hätte da mal wieder eine für mich nicht lösbare Frage.
Wie kann ich per vba aus einem String der z.B. so aussieht:
3#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000RB*=
die viert- und drittletzte Stelle finden? Aber nur die, denn wie Ihr seht kommt dieses "RB" nochmals im String vor.
Es sollen also nur diese letzten Stellen, am Ende des Strings, gesucht werden und das auch noch nur in einer anzugebenden Spalte (nicht im ganzen Blatt) und ab einer bestimmten Zeile nach unten.


Gibt es da eine Möglichkeit, wobei ich den Focus gerne auf vba legen möchte?

Dank für Eure Hilfe!!!
Hallo Erich,

ich verstehe Dich nicht ganz ...

Ansonsten obersimpel so:
=LINKS(RECHTS(A1;4);2)


Gruß Carsten
Hallo Erich,
Sub aaa()
Dim strQ As String, strZ As String
strQ = "3#4N0907063BG #H010S0625#*K09RB8-03306.04.17174000RB*="
strZ = Mid(strQ, Len(strQ) - 3, 2)
Debug.Print strZ
End Sub
Gruß Uwe
Hallo Carsten,

danke für die Rückmeldung.

Die Formel kenne ich....benötige aber unbedingt vba!

Zum Verständnis - ich habe hunderte dieser Strings zu durchsuchen - z.B.:
3#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000ON*=
3#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000R5*=
3#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000R7*=
3#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000R8*=
3#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000RA*=
3#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000R9*=
3#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000RB*=
usw.......
Ich benötige aber nur die besagten letzen rechten Stellen 4 & 3. Wenn aber zufällig diese letzten zwei Stellen nochmals in irgendwo vorkommen habe ich ein Problem mit der nachfolgenden Auswertung.
Der Focus der Frage liegt nicht darauf die zwei Stellen aus den String zu extrahieren sondern ihn "nur"zu finden - und zwar unter den Bedingungen wie ich eingangs beschrieben habe.
Nur in Spalte "A" ab einer anzugebenden Zeile.

Nicht einfach zu erklären das Ganze.
Hi,

das geht wohl am einfachsten mit einer Formel:


Arbeitsblatt mit dem Namen 'Blatt 2'
 GH
10 zeile: 17
113#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000ON*= 
123#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000R5*= 
133#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000R7*= 
143#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000R8*= 
153#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000RA*= 
163#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000R9*= 
173#4N0907063BG   #H010S0625#*K09RB8-03306.04.17174000RB*= 

ZelleFormel
H10="zeile: "&VERGLEICH("*RB??";G10:G993;0)+9
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Das kannst Du aber gerne in VBA übersetzen!
Hallo Uwe,

vielen Dank für den Code. Das funktioniert natürlich perfekt.

Aber wie ich Carsten geantwortet habe soll nur nach den beschriebenen Kriterien gesucht werden - und eventuell in die Zelle rechts daneben ein Eintrag wie "Status1" eingetragen werden.

Der Hintergedanke ist, aus einer Fülle von Daten-Strings bestimmte Strings zusammenzufassen und jeder Fundstelle mit z.B. "Status1" zu kennzeichnen.
Die Daten-Strings bekomme ich immer in unterschiedlicher Anzahl und es kann durchaus sein, dass ein Suchbegriff schon einmal vorkommt. Deshalb soll auch der Suchbereich ab einer bestimmten Zeile eingeschränkt werden können und ab hier nur nach unten in dieser einen Spalte weitergesucht wird.

Vielleicht noch eine Idee?
Hallo Erich,

so langsam wird Die Aufgabenstellung klarer, aber noch nicht ganz.
Suchst Du immer nach 'RB'? Eher wahrscheinlich nach Duplikaten einer Paarung ...
Oder in allen Neuankömmlingen nach Duplikaten eines Paares? Oder auch in allen schon vorhandenen? Oder in beiden ...?

Ich kann die konkrete Aufgabe leider noch nicht richtig erkennen.


Gruß Carsten
Hallo zusammen,

ich habe es so verstanden:


Code:
Sub suchen()
Dim i As Long
Dim lngLetzte As Long
Dim lngBeginn As Long
Dim strgSuchText As String
Dim strgAusgabeText As String

lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
lngBeginn = 3
strgSuchText = "RB"
strgAusgabeText = "status1"

Columns("B").ClearContents 'Spalte B zum Schreiben leeren
For i = lngBeginn To lngLetzte
  If Cells(i, 1) Like "*" & strgSuchText & "??" Then Cells(i, 2) = strgAusgabeText
Next i

End Sub
Hallo noch mal,
man brauch die Verrenkungen mit Like gar nicht machen (bin gerade auf einem Like Tripp)
Es geht natürlich so wie bei Uwe mit Mid()

Code:
Sub suchen()
Dim i As Long
Dim lngLetzte As Long
Dim lngBeginn As Long
Dim strgSuchText As String
Dim strgAusgabeText As String

lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
lngBeginn = 3
strgSuchText = "RB"
strgAusgabeText = "status1"

Columns("B").ClearContents 'Spalte B zum Schreiben leeren

For i = lngBeginn To lngLetzte
 If Mid(Cells(i, 1), Len(Cells(i, 1)) - 3, 2) = strgSuchText Then Cells(i, 2) = strgAusgabeText
Next i

End Sub
Hallo Atilla,

soweit ist das mir schon klar.
Aber diese Codezeilen sind zwar richtig, aber doch etwas sinnlos, da nicht variabel.
Nicht variabel, damit meine ich, dass nur nach RB gesucht werden kann und man nur ab der dritten Zeile anfangen kann.

Die Sub/Funktion muss von außen ansteuerbar sein und am besten gleich alle Importe und/oder vorhandenen Strings durchsuchen.

Ich habe aus der Fragestellung nicht verstanden, ob nur nach Strings mit 'RB' gesucht wird oder von allen Pärchen nach Duplikaten. Und das nur in den Importen oder auch in den vorhandenen. Oder ...
Und wo stehen die Importe, wo stehen die vorhandenen?

Wie soll die Funktion aufgerufen werden, damit diese ab einer bestimmten Zeile suchen kann ...
Sollen gleich alle Zeilen verarbeitet werden, wie soll die Ausgabe sein, ... ?
Etc. pp.



Gruß Carsten
Hallo,

noch ein Erklärungsversuch:
Nein ich suche natürlich nicht immer nur nach "RB" - das war nur ein Beispiel.
Ich suche in allen Strings die ich von einer Datenübertragung erhalte nur diese dritt- und viertletzten Ziffern oder Zahlen.
Also in allen Neuankömmlingen und auch in allen schon vorhandenen.
Seiten: 1 2 3 4 5 6 7 8 9