Teil aus String entfernen 2
#1
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
Top
#2
Hallo Klaus,

so? 21
[attachment=38611]

Also UDF und Sub.
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • Klaus
Top
#3
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
Top
#4
Hallo Klaus, 19

so? 21
[attachment=38613]
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • Klaus
Top
#5
...einfach nur ein Traum  18

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

Liebe Grüße
Klaus
Top
#6
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Klaus
Top
#7
Hallo snb,

auch dir ein herzliches Dankeschön.

Liebe Grüße
Klaus
Top
#8
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.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste