Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1680to1684
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
Inhaltsverzeichnis

Zeichenkette korrigieren

Zeichenkette korrigieren
21.03.2019 09:15:23
Al
Hallo zusammen,
ich habe folgende Problemstellung:
Ich habe eine Liste in der Spalte A. Inhalte dieser Liste sind Zeichenketten wie zB:
P-0173381-A-18-F1-1
P-0173381-A-18-F1-2
P-0173381-A-18-F2
P-0173381-A-18-F19
P-0173381-A-18-F1a-1
3830-15-1119-F1c-1
3830-15-1119-F112-2
3830-15-1119-F13v-3
3830-15-1119-F121c-4
P-0173381-A-18-B1
P-0173381-A-18-B17
P-0173381-A-18-B9a
P-0173381-A-18-B9b
P-0173381-A-18-Z17_1
P-0173381-A-18-Z18c_2
Auf Basis dieser Zeichnketten lasse ich ein SVerweis-funktion laufen, um aus einer Tabelle gewisse Werte/Attribute auszulesen. Das Problem dabei: Überall wo ein F vorkommt, soll aber ein B stehen und alle nachfolgenden Zeichen/Buchstaben/Zahlen hinter der ersten Zahl(en) nach dem F sollen verschwinden. Grund hierfür ist, dass die Tabelle keine F und beispielsweise ...c-4 (letzter Listeneintrag) enthält und die Suche mit SVERWEIS immer zu "#NV" Ergebnissen führt.
Die Liste oben, wie sie danach aussehen soll, damit die SVERWEIS-Funktion Ergebnisse bringt, sei hier nochmal dargestellt: (korrekte Liste kann auch in Spalte B gelistet werden)
P-0173381-A-18-B1
P-0173381-A-18-B1
P-0173381-A-18-B2
P-0173381-A-18-B19
P-0173381-A-18-B1
3830-15-1119-B1
3830-15-1119-B112
3830-15-1119-B13
3830-15-1119-B121
P-0173381-A-18-B1
P-0173381-A-18-B17
P-0173381-A-18-B9
P-0173381-A-18-B9
P-0173381-A-18-Z17
P-0173381-A-18-Z18
Kann mir da jemand weiterhelfen? Gibt es Zellfunktionen, die dieses Problem beheben können?
Danke für die Mühe.
Gruß
Al

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
per VBA
21.03.2019 10:08:27
UweD
Hallo
evtl hilft dir ja dieser Code
in ein Modul
Sub F_in_B()
    Dim LR As Long, i As Long, j As Integer, k As Integer, Sp As Integer, Z1 As Integer
    Dim Arr, Ende As Integer
    
    Z1 = 1 'ggf Überschrift berücksichtigen 
    Sp = 1 'Spalte A 
    LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte 
    
    Columns(Sp).Offset(, 1).ClearContents
    For i = 1 To LR
        Arr = Split(Cells(i, Sp), "-")
        For j = Ubound(Arr) To Lbound(Arr) Step -1
            If Not IsNumeric(Arr(j)) Then
                'F in B wechseln 
                Arr(j) = Replace(Arr(j), "F", "B")
                
                'Unterstriche weg 
                Ende = InStr(Arr(j), "_")
                If Ende > 0 Then
                    Arr(j) = Left(Arr(j), Ende - 1)
                End If
                
                'Test hinter letzer Ziffer löschen 
                For k = Len(Arr(j)) To 1 Step -1
                    If IsNumeric(Mid(Arr(j), k, 1)) Then
                        Arr(j) = Left(Arr(j), k)
                        Exit For
                    End If
                Next k
                
                'Wert zurückschreiben 
                Cells(i, Sp).Offset(0, 1) = Join(Arr, "-")
                Exit For
            Else
                 'Letzte Zahl entfernen 
                 Redim Preserve Arr(j - 1)
            End If
        Next j
    Next i
    
End Sub

LG UweD
Anzeige
AW: per VBA
21.03.2019 10:45:54
Al
Hallo Uwe,
klappt super. Ich habe deinen Code auch umgeschrieben für ein anderes Problem, das ich hatte.
Besten Dank.
Gruß
Danke für die Rückmeldung owT
21.03.2019 11:20:44
UweD
AW: alternativ mit Formel ...
21.03.2019 10:15:13
neopa
Hallo Al,
... in B1:
=WECHSELN(LINKS(WENNFEHLER(LINKS(A1;FINDEN("!";WECHSELN(WECHSELN(A1;"_";"-");"-";"!";
5-ISTZAHL(LINKS(A1;1)+0)))-1);A1);
LÄNGE(WENNFEHLER(LINKS(A1;FINDEN("!";WECHSELN(WECHSELN(A1;"_";"-");"-";"!";
5-ISTZAHL(LINKS(A1;1)+0)))-1);A1))-ISTFEHL(RECHTS(WENNFEHLER(LINKS(A1;FINDEN("!";WECHSELN(WECHSELN(A1;"_";"-");"-";"!";
5-ISTZAHL(LINKS(A1;1)+0)))-1);A1);1)+0));"F";"B")

und nach unten kopieren.
Gruß Werner
.. , - ...
Anzeige
AW: alternativ mit Formel ...
21.03.2019 10:48:08
Al
Hallo Werner,
besten Dank für die Hilfe. Klappt ebenfalls sehr gut!
Gruß
Al

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige