Wie kann ich die Leerzeichen in Excel in einer Zelle mit Buchstaben und Zahlen zwischen den Zahlen löschen?

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.



Problem1993 
Beitragsersteller
 03.12.2015, 15:25

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?

0

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)


Iamiam  04.12.2015, 02:06

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

0
Iamiam  04.12.2015, 12:13
@Iamiam

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

0
Iamiam  05.12.2015, 00:57
@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!

0

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.