Я хотел бы иметь следующий формат в ячейке в Excel:
123g 99s 99c
100 медь (с) = 1 серебро (с)
100 серебра = 1 золото (г)
Так что, если я 12394
он будет показан как "1g 23s 94c".
Это возможно как-то?
Я хотел бы иметь следующий формат в ячейке в Excel:
123g 99s 99c
100 медь (с) = 1 серебро (с)
100 серебра = 1 золото (г)
Так что, если я 12394
он будет показан как "1g 23s 94c".
Это возможно как-то?
Попробуйте этот пользовательский формат:
#0"g" #0"s" 00"c"
Обратите внимание, что это покажет все три "единицы" независимо от фактической суммы, поэтому 12
будет отображаться как "0g 0s 12c". Если вы хотите показать только самый большой "блок" с ненулевым количеством (таким образом, 12
будет "12c", 598
будет "5s 98c" и т.д.), Вы можете настроить его следующим образом, чтобы фактически применять различные форматы на основании значения:
[>=10000]#0"g" #0"s" 00"c";[>=100]#0"s" 00"c";#0"c"
Он не идеален, например 10245
будет отображаться как "1g 02s 45c", а не "1g 2s 45c", потому что он просто делит значение ячейки, а не делит его на 100, чтобы получить отдельные суммы, но кроме этого должен делать то, что вы хотите.
Чтобы обработать отрицательные значения, вам нужно будет объединить вышеуказанный формат с условным форматированием, потому что в Excel может быть только до 3 условий в одном числовом формате. Попробуйте следующее (я предполагаю, что Excel 2010 также должен работать в 2007 году, но не уверен в более ранних версиях):
=A1>=0
, затем нажмите «Формат ...»[>=10000]#0"g" #0"s" 00"c";[>=100]#0"s" 00"c";#0"c"
=A1<0
, затем нажмите «Формат ...»[<=-10000]-#0"g" #0"s" 00"c";[<=-100]-#0"s" 00"c";#0"c"
Если вам нужно изменить или удалить правила форматирования или расширить их, чтобы применить к большему количеству ячеек, просто перейдите в "Условное форматирование" → "Управление правилами".
Другой вариант - использовать функцию VBA для форматирования значений. Нажмите Alt+F11, чтобы открыть редактор VBA, щелкните правой кнопкой мыши в окне «Проект» и выберите «Вставка» → «Модуль», а затем вставьте следующий код (разумеется, один из многих способов написания такой функции):
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
Этот подход обеспечивает большую гибкость, чем использование пользовательских форматов чисел, и его проще использовать, чем управление правилами условного форматирования - просто введите =MyFormat(12345)
вместо 12345
. Недостатком, однако, является то, что вы теряете возможность выполнять математические операции с данными, потому что Excel теперь видит значения в виде текста, а не чисел.
Следующий пользовательский формат будет делать то, что вы хотите:
??\g ??\s ??\c