Wie kann ich die Leerzeichen in Excel in einer Zelle mit Buchstaben und Zahlen zwischen den Zahlen löschen?
Hallo, Ich habe einen text mit Zahlen und Buchstaben und die Zahlen sind immer mit einer Leertaste getrennt.
Beispiel:
"Hallo 123 456 wie geht es dir" >>zu>> "Hallo 123456 wie geht es dir"
Gebt mir bitte, wenn möglich, dazu eine Formel, denn es handelt sich um 2.500 solcher Texte.
3 Antworten
STRG+H
Suchen und Ersetzen:
"1 " zu 1
"2 " zu 2
usw. bis 9 bzw. 0. Eingabe ohne die Anführungszeichen. Wichtig: In der Reihenfolge Zahl Leerzeichen, dann werden nicht die Leerzeichen vor den Zahlenfolgen erwischt.
Mach eine Sicherungskopie vorher, falls was schiefgeht (falsche Einträge beim Suchen/Ersetzen)
Das ist unterm Strich schneller als zu warten bis doch jemand mit einer Formel auftaucht, da die letzte Frage anscheinend ja keine Lösung brachte.
Funktioniert so nicht ganz, habe zwischendurch im text
auch mal zahlen das einzige was ich da habe ist immer vier zahlen Leerzeichen und nochmal vier zahlen. kann ich mit dem etwas anfangen?
Noch'n Makro:
Sub Zahlen4_4ZahlenLZlöschen()
Dim c As Range, i As Integer
For Each c In Selection
For i = Len(c) - 4 To 4 Step -1
If Mid(c, i, 1) = " " Then
Debug.Print i 'nur zur Entwicklung sinnvoll
If IsNumeric(Mid(c, i - 4, 4)) And IsNumeric(Mid(c, i + 1, 4)) Then c.Value = Mid(c, 1, i - 1) & Mid(c, i + 1, 9999)
End If
Next i
Next c
End Sub
Die Konstruktion mit Mid()&Mid() ist eine unschöne Krücke, aber sie geht. Ich finde einfach nicht die richtige Syntax für sowas wie c.Text.Characters(i)
Hat mich lange geärgert, aber jetzt hab ichs (hoffentlich korrekt), funktionsfähig, wenn auch nicht gereinigt (hat mich den ganzen Tag gekostet, ich mag heut nicht mehr!): es werden ALLE AUSGEWÄHLTEN Zellen erfasst (kann auch nur eine einzige sein) und FORMELN WERDEN ZU WERT UMGESETZT!!!:
Sub Zahlen4_4ZahlenLZlöschen() 'führende/abschließende LZ zählen wie Ziffern einer Zahl! (nicht von Ziffern eingeschlossene!)
Dim c As Range, i As Integer, Txt As String 'Txt überflüssig wg." " & c & " " ?
For Each c In Selection
Txt = " " & c.Value & " "
For i = Len(Txt) - 5 To 5 Step -1
Debug.Print i & "_Z:_" & Mid(" " & c & " ", i, 1) & "__Z+5:_" & Mid(" " & c & " ", i + 5, 1) & "_"
If Mid(" " & c & " ", i, 1) = " " Then
Debug.Print "1.if"
If IsNumeric(Mid(" " & c & " ", i - 4, 4)) And IsNumeric(Mid(" " & c & " ", i + 1, 4)) Then
Debug.Print "2.if" 'isnumeric: doppelt gemoppelt?
If Mid(" " & c & " ", i + 5, 1) = " " And Mid(" " & c & " ", i - 5, 1) = " " Then
Debug.Print "3.if"
If IsNumeric(Mid(" " & c & " ", i - 5, 5)) And IsNumeric(Mid(" " & c & " ", i + 1, 5)) _ Then c.Value = Mid(c, 1, i - 2) & Mid(c, i, 9999): Debug.Print "4.if__" & Mid(c, 1, i - 2) & "__" & Mid(c, i - 1, 9999)
'__ alternativloses, einzeiliges If ___ wg hier blankem c muss i eins vermindert werden!!!
End If
End If
End If
Next i
Next c
End Sub
Bei Rückfragen am besten einen Kommentar hier neu oder bewerten, damit ich das in den Mitteilungen sehe!
Ich kann dir ein Makro dafür anbieten:
Function LeerzeichenZwischenZahlenLöschen(sZuBearbeiten As String) As String Dim i, j As Integer For i = 0 To 9 For j = 0 To 9 sZuBearbeiten = Replace(sZuBearbeiten, CStr(i) & " " & CStr(j), CStr(i) & CStr(j)) Next Next LeerzeichenZwischenZahlenLöschen = sZuBearbeiten End Function
Wenn zwischen zwei Ziffern mehrere Leerzeichen stehen können, kannst du noch mit k=1 bis n über die Leerzeichen iterieren.
es könnte sein, dass Du anstatt +4, -4 jeweils 5 schreiben musst, weil ein Leerzeichen ignoriert wird bei isnumeric()
Probier ich morgen aus. Gute Nacht jetzt1