Иногда мне нравится отображать числа вместе с текстом в одной ячейке. Для этого я специально форматирую ячейку, например, 0,00 "test", например. ячейка A1
с формулой =PI()
, но отформатированная в пользовательском формате 0.00" test"
, вернет отображаемый результат 3.14 test
.
Важно отметить, что значение ячейки не изменилось при форматировании — вы все еще можете выполнить =A1 * 3
в другой ячейке и получить результат — поскольку значение A1
по-прежнему равно Pi, изменилось только его отображение.
Для пользовательской функции, которая возвращает числовое значение (в моем случае Long
, но это может быть любое число), есть ли способ вернуть ячейку, чтобы она отображалась одним способом, но это было фактическое значение (я полагаю, что .Value2
в VBA) - это число, а не текст.
Я пробовал Format(
в VBA, но он возвращает текстовую строку. Я бы просто отформатировал свою ячейку так, как я хочу, вручную, но, как вы можете видеть из приведенного ниже кода, форматирование зависит от промежуточных результатов (я пытаюсь вернуть значение, отформатированное с учетом времени вычисления).
UDF_RESULT = Format(valueResult.Length, IIf(tElapsed < timeout, "0" & " """ & Round(tElapsed, 2) & "s""", "0"))
Это было бы легко сделать с помощью макроса, но в UDF это сложнее. Я мог бы объявить все промежуточные значения на уровне модуля, тогда макрос Worksheet_Calculate()
сможет получить доступ к этим значениям и применить пользовательское форматирование, но подход с оболочкой UDF был бы намного лучше.