Clever-Excel-Forum

Normale Version: Teil aus String entfernen 2
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo miteinander,

ich habe quasi dieselbe Frage wie heute Morgen noch einmal, nur mit einem anderen String.
Leider bekomme ich den genannten Code nicht auf den neuen String umgebaut.

In Spalte J stehen in jeder Zeile Strings - je nach Sheet unterschiedlich viele. Mal 100, Mal 500 Zeilen.
Es soll nur die Zahl zwischen den ersten beiden "||"..."||" um drei Spalten weiter kopiert werden.
Steht in der Zahl ein Komma, dann soll dieses entfernt werden.
Steht zwischen den beiden"||"..."||" ein oder mehrere Fragezeichen, dann soll nichts dort stehen.

Bsp. Text in Spalte J
|18||963||14,128||404||32,942
übrig sollte in diesem Beispiel also in Spalte M nur noch 963 bleiben

weitere Beispiele:
1||60||2,450||70||3,900
übrig soll 60 bleiben

| 82 || ?? ||30,154 || 861.5 || 219,243
| 61 || ?? || 26,008 || 743|| 151,468
übrig soll "nichts" bleiben

|60||2,784||25,794||737||148,371
übrig soll 2784 bleiben

Dann ist in jeder zweiten Zeile ein "kurzer" String welcher entfernt werden soll - ohne die Zeile zu löschen, und alles darunter dann eins nach oben geschoben werden.
Bsp:
|67||3,309||27,257||779||170,315
|-
|80||4,561||29,784||851||212,579
|-
| 81 || 4,675 || 29,969 || 856 || 215,906
|-
| 82 || ?? ||30,154 || 861.5 || 219,243

übrig bliebe hier dann also:
3309
4561
4675
"nichts" - also eine Leerzeile

Wäre auch das machbar?

Liebe Grüße
Klaus
Hallo Klaus,

so? 21
[attachment=38611]

Also UDF und Sub.
Guten Morgen Case,

vielen Dank auch hier wieder. 
Und wieder perfekt. 

Könnte man die Zahlenreihe jetzt noch (ohne die Zeile zu löschen) ohne die Leerzellen nach oben auffüllen?

Liebe Grüße
Klaus
Hallo Klaus, 19

so? 21
[attachment=38613]
...einfach nur ein Traum  18

funktioniert wunderbar. 
Herzlichen Dank dir und einen schönen Tag noch

Liebe Grüße
Klaus
Oder:

Code:
Sub M_snb()
    sn = Tabelle1.Columns(10).SpecialCells(2)
   
    For j = 1 To UBound(sn)
      st = Split(sn(j, 1), "||")
      If UBound(st) > 0 Then c00 = c00 & "_" & Replace(st(1), ",", "")
    Next
    st = Filter(Split(Mid(c00, 2), "_"), "?", 0)
   
    Tabelle1.Cells(1, 11).Resize(UBound(st) + 1) = Application.Transpose(st)
End Sub
Hallo snb,

auch dir ein herzliches Dankeschön.

Liebe Grüße
Klaus
Statt 40 KB inkl. 3er Codes an Antworten geht auch einfach herunterkopierend: 

=WECHSELN(GLÄTTEN(TEIL(WECHSELN(INDEX(A:A;ZEILE(A1)*2);"||";WIEDERHOLEN(" ";99));100;99));",";)

Excel war nämlich mal nur eine Tabellenkalulation.