Registriert seit: 09.05.2015
Version(en): 2013, Office 365
18.04.2017, 16:09
(Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2017, 16:09 von sharky51.)
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!!!
Registriert seit: 28.07.2015
Version(en): 365
Hallo Erich,
ich verstehe Dich nicht ganz ...
Ansonsten obersimpel so:
=LINKS(RECHTS(A1;4);2)
Gruß Carsten
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
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.
Registriert seit: 13.04.2014
Version(en): 365
Hi,
das geht wohl am einfachsten mit einer Formel:
Arbeitsblatt mit dem Namen 'Blatt 2' |
| G | H |
10 | | zeile: 17 |
11 | 3#4N0907063BG #H010S0625#*K09RB8-03306.04.17174000ON*= | |
12 | 3#4N0907063BG #H010S0625#*K09RB8-03306.04.17174000R5*= | |
13 | 3#4N0907063BG #H010S0625#*K09RB8-03306.04.17174000R7*= | |
14 | 3#4N0907063BG #H010S0625#*K09RB8-03306.04.17174000R8*= | |
15 | 3#4N0907063BG #H010S0625#*K09RB8-03306.04.17174000RA*= | |
16 | 3#4N0907063BG #H010S0625#*K09RB8-03306.04.17174000R9*= | |
17 | 3#4N0907063BG #H010S0625#*K09RB8-03306.04.17174000RB*= | |
Zelle | Formel |
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!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
18.04.2017, 22:33
(Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2017, 22:33 von sharky51.)
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?
Registriert seit: 28.07.2015
Version(en): 365
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
Registriert seit: 14.04.2014
Version(en): 2003, 2007
18.04.2017, 23:10
(Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2017, 23:10 von atilla.)
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
Gruß Atilla
Registriert seit: 28.07.2015
Version(en): 365
18.04.2017, 23:32
(Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2017, 23:32 von DbSam.)
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
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
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.