Registriert seit: 02.02.2021
Version(en): 2016
Hallo.
Da ich aus beruflichen Gründen nun zu Microsoft Excel gezwungen bin (habe vorher mit Numbers gearbeitet), habe ich gleich ein riesen Problem:
Für eine Teileliste brauche ich das Format:
1234 123 1234
Bei Zahlen ist das einfach, als Format #### ### #### angeben und gut ist.
Man tippt "12341231234" ein und erhält "1234 123 1234".
Leider braucht es für die Übersicht aber auch folgende Eingabe:
1234 12x xxxx oder
1234 123 1xxx usw.
Wenn ich mit oben erwähntem Format jetzt "123412xxxxx" eingebe, erhalte ich auch "123412xxxxx" und nicht, wie gewünscht, "1234 12x xxxx".
Wie kann ich Zellen so formatieren, dass alles, was ich eingebe, in diesem Format ausgegeben wird?
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
02.02.2021, 09:35
(Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2021, 09:36 von RPP63.)
Moin!
Geht das in Numbers über das Zahlenformat?
In Excel jedenfalls imo nicht, da Excel mit dem Formatstring "@@@@ @@@ @@@@" nichts anfangen kann.
Format() in VBA kommt damit hingegen klar.
UDF:
Function Text_or_Number$(Origin)If IsNumeric(Origin) Then Text_or_Number = Format(Origin, "#### ### ####")Else Text_or_Number = Format(Origin, "@@@@ @@@ @@@@")End IfEnd Functionergibt:
| G | H |
12 | 12341231234 | 1234 123 1234 |
13 | 123412xxxxxx | 1234 12x xxxxx |
Zelle | Formel |
H12 | =Text_or_Number(G12) |
H13 | =Text_or_Number(G13) |
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
02.02.2021, 09:49
(Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2021, 09:50 von RPP63.)
Da finde ich meinen Formatstring aber flauschiger!

By the way ist eine Unterscheidung zwischen Zahl und Text nicht notwendig.
Als Worksheet_Change reicht:
(der String wird durch das ! von links nach rechts aufgefüllt,
Eingabe von 123123 ergibt dann 123 123)
Microsoft Excel Objekt Tabelle2Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errExit
With Target
If .Column = 5 And .CountLarge = 1 Then
Application.EnableEvents = False
.Value = Format(.Value, "!@@@@ @@@ @@@@")
End If
End With
errExit:
Application.EnableEvents = True
End Sub
| E |
19 | 1234 567 aaa |
20 | 1234 567 8901 |
21 | 1234 12x xxxx |
22 | 1234 5 |
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 02.02.2021
Version(en): 2016
Das sieht ja alles recht schlüssig aus. Ich habe nur ein Problem:
Wo soll ich das hinschreiben?

Achtung! Ich habe erstmals seit 18 Jahren wieder einen Windows-PC in den Fingern....
Unter OS geht das alles wesentlich einfacher...