Основываясь на link by @Vasily, вы можете получить желаемый результат, используя только условное форматирование. Это хорошо, потому что это означает, что все ваши значения хранятся как Числа, а не текст, а математика работает, как обычно,.
Общие шаги:
- Создание нового условного форматирования для каждого блока 1000, который применяется формат чисел для этого блока
- Добавить наибольшее состояние в верхней части, так что форматирует первый
- полощите и повторяю, чтобы получить все те, которые вы хотите
Условное форматирование используется для столбца типа C
, который представляет собой просто случайные данные с разной степенью десяти. Это тот же номер, что и столбец D
, иначе стиль отличается.
Количество форматов, довольно легко, так как они являются такими же, как that link, see Large Numbers section.
- те =
0 " "
- тысяч =
0, " k"
- миллионы =
0,, " M"
- и так далее для однако много вы хотите
Автоматизация, если вы не хотите щелкать и введите весь день, вот несколько VBA, которые создадут для вас все условное форматирование (для текущего Selection
). Этот пример выходит на миллиарды. Продолжайте добавлять полномочия 3, расширив Array
с большим количеством записей.
Sub CreateConditionalsForFormatting()
'add these in as powers of 3, starting at 1 = 10^0
Dim arr_markers As Variant
arr_markers = Array("", "k", "M", "B")
For i = UBound(arr_markers) To 0 Step -1
With Selection.FormatConditions.Add(xlCellValue, xlGreaterEqual, 10^(3 * i))
.NumberFormat = "0" & Application.WorksheetFunction.Rept(",", i) & " "" " & arr_markers(i) & """"
.StopIfTrue = False
End With
Next
End Sub
изменить значение StopIfTrue
так, что это не нарушает другие условное форматирование, которое могло бы существовать. Если наибольшее условие находится сверху (добавлено первым), то NumberFormat
от этого удерживается. По умолчанию они создаются с помощью StopIfTrue = True
. Это спорный вопрос, если у вас нет другого условного форматирования в этих ячейках.
см. Это http://www.excel-easy.com/examples/custom-number-format.html – Vasily
У вас есть что-то, что работает, но вы хотите * более подходящее решение * - кажется мне чистое мнение. К Q: «Можно ли использовать метрические обозначения« k »в excel?» кажется, что вы уже удовлетворены собой, это A ** YES **. – pnuts
Как только OP создает строки из совершенно точных чисел, он мог бы по крайней мере отформатировать их для создания функциональных строк ... 'Format (num," #, ## 0 ")'.Или он может использовать метод «Range.NumberFormat» после того, как по крайней мере иметь функциональные числа. OFF/Rant: «Это называется * mosqear *, это не совсем комар или медведь»./Венгерская пословица/ – user3819867