Chciałbym mieć następujący format w komórce w Excelu:
123g 99s 99c
100 miedzi (c) = 1 srebra (ów)
100 srebra = 1 złota (g)
Tak więc, jeśli wejdę 12394
, będzie wyświetlany jako „1g 23s 94c”.
Czy to w jakiś sposób jest możliwe?
źródło
Chciałbym mieć następujący format w komórce w Excelu:
123g 99s 99c
100 miedzi (c) = 1 srebra (ów)
100 srebra = 1 złota (g)
Tak więc, jeśli wejdę 12394
, będzie wyświetlany jako „1g 23s 94c”.
Czy to w jakiś sposób jest możliwe?
Wypróbuj ten niestandardowy format:
#0"g" #0"s" 00"c"
Zauważ, że pokażą to wszystkie trzy „jednostki” niezależnie od faktycznej kwoty, więc 12
będą pokazane jako „0g 0s 12c”. Jeśli chcesz pokazać się tylko w największej „jednostce” z niezerową kwotą (tak więc 12
byłoby to „12c”, 598
byłoby to „5s 98c” itp.), Możesz dostosować ją w następujący sposób, aby zastosować różne formaty w oparciu o wartość:
[>=10000]#0"g" #0"s" 00"c";[>=100]#0"s" 00"c";#0"c"
Nie jest idealny, na przykład 10245
będzie wyświetlany jako „1g 02s 45c”, zamiast „1g 2s 45c”, ponieważ po prostu dzieli wartość komórki, a nie dzieli ją przez 100, aby uzyskać poszczególne kwoty, ale poza tym powinien rób co chcesz.
Aby obsłużyć wartości ujemne, będziesz musiał połączyć powyższy format z formatowaniem warunkowym, ponieważ Excel może mieć tylko 3 warunki w jednym formacie liczbowym. Spróbuj wykonać następujące czynności (zakładam, że program Excel 2010 powinien również działać w 2007 r., Nie jestem pewien co do wcześniejszych wersji):
=A1>=0
, a następnie kliknij „Formatuj ...”[>=10000]#0"g" #0"s" 00"c";[>=100]#0"s" 00"c";#0"c"
=A1<0
, a następnie kliknij „Formatuj ...”[<=-10000]-#0"g" #0"s" 00"c";[<=-100]-#0"s" 00"c";#0"c"
Jeśli chcesz zmodyfikować lub usunąć reguły formatowania lub rozwinąć je, aby zastosować do większej liczby komórek, po prostu wybierz „Formatowanie warunkowe” → „Zarządzaj regułami”.
Inną opcją jest użycie funkcji VBA do sformatowania wartości. Naciśnij Alt+, F11aby otworzyć edytor VBA, kliknij prawym przyciskiem myszy w oknie projektu i wybierz Wstaw → Moduł, a następnie wklej następujący kod (oczywiście tylko jeden z wielu sposobów pisania takiej funkcji):
Function MyFormat(intValue)
Dim strReturn As String
If intValue < 0 Then strReturn = "-"
intValue = Abs(intValue)
If intValue > 10000 Then
strReturn = strReturn & Fix(intValue / 10000) & "g"
intValue = intValue - (Fix(intValue / 10000)) * 10000
End If
If intValue > 100 Then
If Len(strReturn) > 0 Then strReturn = strReturn & " "
strReturn = strReturn & Fix(intValue / 100) & "s"
intValue = intValue - (Fix(intValue / 100)) * 100
End If
If Len(strReturn) > 0 Then strReturn = strReturn & " "
strReturn = strReturn & intValue & "c"
MyFormat = strReturn
End Function
Takie podejście zapewnia większą elastyczność niż używanie niestandardowych formatów liczb i jest łatwiejsze w użyciu niż zarządzanie regułami formatowania warunkowego - wystarczy wpisać =MyFormat(12345)
zamiast 12345
. Minusem jest jednak to, że tracisz możliwość wykonywania operacji matematycznych na danych, ponieważ Excel widzi teraz wartości jako tekst, a nie liczby.
Poniższy niestandardowy format zrobi to, co chcesz:
źródło