Frage von Problem1993, 61

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.

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 56

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.

Expertenantwort
von Ninombre, Community-Experte für Excel, 56

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.


Kommentar von Problem1993 ,

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?

Expertenantwort
von Iamiam, Community-Experte für Excel, 41

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)

Kommentar von Iamiam ,

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

Kommentar von Iamiam ,

Die Leerzeichen in Verbindung mit isnumeric() machen mehr Probleme als gedacht! ich setz mich am WE nochmals dran!

Kommentar von Iamiam ,

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!

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten