killtec
Goto Top

Excel Feld mit Zahlen formaiteren

Hallo,
ich möchte in Excel eine Zahl formatieren.
Es soll nach dem Muster sein:

1-12345-12345-123456789-1

Wie bekomme ich denn diese Art der Formatierung in der Zelle hin?

Danke.

Gruß

Content-ID: 293677

Url: https://administrator.de/forum/excel-feld-mit-zahlen-formaiteren-293677.html

Ausgedruckt am: 02.04.2025 um 08:04 Uhr

122990
122990 20.01.2016 aktualisiert um 14:39:08 Uhr
Goto Top
Zelle(n) markieren STRG+1 drücken > Benutzerdefiniert > Eingeben:
0"-"00000"-"00000"-"000000000"-"0
Gruß grexit
killtec
killtec 20.01.2016 um 14:18:26 Uhr
Goto Top
Hi @122990,
das funktioniert schon mal, hab es mit # versucht face-sad
Jetzt habe ich nur noch einen Bug, da es eine Zahl ist, schreibt excel was falsches hin... face-sad
Ab dem 4. Block setzt er ab der 5. Stelle alles auf 0 face-sad
bsp.:
Soll:
1-12345-12345-12345678-1 wird dann zu:
1-12345-12345-12340000-0

Hast du hier noch eine Idee? Wenn ich es als text eingebe bleibt es richtig.

Gruß
122990
122990 20.01.2016 aktualisiert um 14:41:59 Uhr
Goto Top
Ab dem 4. Block setzt er ab der 5. Stelle alles auf 0
Liest du hier:
Last digits are changed to zeroes when you type long numbers in cells of Excel
killtec
killtec 20.01.2016 um 14:51:52 Uhr
Goto Top
Hi,
ok, dachte mir das fast mit dem Textformat... Dann kann ich aber nicht automatisch die Bindestriche an den Stellen schreiben, oder?
Hab zumindest noch nicht raus bekommen wie das klappen soll.

Gruß
122990
Lösung 122990 20.01.2016 aktualisiert um 15:28:19 Uhr
Goto Top
Z.B. mit einem Formel-Makro:
Public Function FormatText(str As String)
    If Len(str) = 21 Then
        FormatText = Mid(str, 1, 1) & "-" & Mid(str, 2, 5) & "-" & Mid(str, 7, 5) & "-" & Mid(str, 12, 9) & "-" & Right(str, 1)  
    Else
        FormatText = Nothing
    End If
End Function
EIngabe erfolgt dann z.B. als Text ohne Bindestriche in Zelle A1 und in B1 steht dann als Formel:
=FormatText(A1)

-edit- Nachtrag

Oder automatisch in der selben Zelle ginge das auch mit einem Event-Makro im jeweiligen Sheet auf dem die Daten liegen:
Im Beispiel werden die Zellen A1:A20 auf Änderung überwacht und nach Eingabe die Zahl formatiert (Zellen bitte als Text formatieren)
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
    If Not Application.Intersect(Range("A1:A20"), Target) Is Nothing Then  
        strValue = Target.Cells(1).Value
        If Len(strValue) = 21 Then
            Target.Cells(1).Value = Mid(strValue, 1, 1) & "-" & Mid(strValue, 2, 5) & "-" & Mid(strValue, 7, 5) & "-" & Mid(strValue, 12, 9) & "-" & Right(strValue, 1)  
        Else
            'Target.Cells(1).Value = ""  
        End If
    End If
End Sub
killtec
killtec 20.01.2016 um 15:28:13 Uhr
Goto Top
Hi,
Danke, so funktioniert das -> Das Automatische. habe das noch angepasst auf zwei Spalten, ist ja kein Problem face-smile

Danke dir!

Gruß