W jaki sposób program Excel wyświetla wartości liczbowe jako niestandardowe „waluty” (np. Miedź, srebro, złoto)?

3

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?

Feroc
źródło

Odpowiedzi:

6

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 12będą pokazane jako „0g 0s 12c”. Jeśli chcesz pokazać się tylko w największej „jednostce” z niezerową kwotą (tak więc 12byłoby to „12c”, 598był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 10245bę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):

  1. Wybierz komórki i przejdź do „Formatowanie warunkowe” → „Nowa reguła ...” (na karcie Narzędzia główne)
  2. Wybierz „Użyj formuły, aby określić, które komórki sformatować”
  3. W polu formuły wpisz =A1>=0, a następnie kliknij „Formatuj ...”
  4. Wybierz kartę „Numer”, a następnie „Niestandardowy” i wprowadź format liczb od góry:
    [>=10000]#0"g" #0"s" 00"c";[>=100]#0"s" 00"c";#0"c"
  5. Kliknij dwa razy „OK”.
  6. Powtórz kroki 1 i 2.
  7. W polu formuły wpisz =A1<0, a następnie kliknij „Formatuj ...”
  8. Wybierz kartę „Liczba, a następnie„ Niestandardowe ”i wprowadź następujący format liczb (w zasadzie taki sam jak pierwszy, z wyjątkiem obsługi wartości ujemnych):
    [<=-10000]-#0"g" #0"s" 00"c";[<=-100]-#0"s" 00"c";#0"c"
  9. Kliknij dwa razy „OK”.

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.

Indrek
źródło
W porządku.
Wielkie
Ach, bardzo miło! Próbowałem wymyślić, jak to zrobić, ale do tej pory znalazłem tylko formatowanie warunkowe.
SaintWacko,
O twoim ulepszeniu: To świetne dla wartości dodatnich, ale dla wartości ujemnych pokazuje już tylko miedź.
Feroc
@ Feroc Ach, nie myślałem o wartościach ujemnych. Zobacz zaktualizowane instrukcje w mojej odpowiedzi.
Indrek
Oha ... ok, myślę, że po prostu wybieram pierwsze rozwiązanie. Nie chcę, aby było to zbyt skomplikowane. Wielkie dzięki, świetna pomoc.
Feroc
0

Poniższy niestandardowy format zrobi to, co chcesz:

??\g ??\s ??\c
SaintWacko
źródło