При использовании формулы для объединения содержимого нескольких ячеек в одну, Крис не может заставить Excel сохранить форматирование исходных ячеек. Например, предположим, что ячейки A1 и B1 содержат 1 и 0,33 соответственно. В ячейку C1 он вводит следующую формулу:
= A1 & «:» & B1
Результат в ячейке C1 выглядит следующим образом:
1: 0,3333333333
Причина, по которой результирующий C1 не соответствует тому, что показано в B1 (0,33), заключается в том, что значение в B1 на самом деле не 0,33. Внутри Excel поддерживает значения до 15 цифр, поэтому, если ячейка B1 содержит формулу, такую как = 1/3, внутренне она поддерживается как 0,33333333333333. Однако то, что вы видите в ячейке B1, зависит от того, как она отформатирована. В этом случае форматирование, вероятно, настроено на отображение только двух цифр после десятичной точки.
Однако есть несколько способов получить желаемые результаты в ячейке C1. Один из способов – просто немного изменить формулу, чтобы значения, извлеченные из ячеек A1 и B1, были отформатированы. Например, в следующем примере для форматирования используется функция ТЕКСТ:
= TEXT (A1, «0») & «:» & TEXT (B1, «0.00»)
В этом случае A1 отформатирован для отображения только целых чисел, а B1 отформатирован для отображения только двух десятичных знаков .. Вы также можете использовать функцию ROUND для достижения аналогичного результата:
= ROUND (A1,0) & «:» & ROUND (B1,2)
Еще одно возможное решение – изменить способ работы Excel с точностью в книге. Выполните следующие действия:
- Выберите «Параметры» в меню «Инструменты». Excel отображает диалоговое окно “Параметры”.
- Убедитесь, что отображается вкладка “Расчет”. (См. Рис. 1.)
- Убедитесь, что установлен флажок «Точность при отображении».
- Нажмите кнопку «ОК».
Рис. 1. Вкладка «Расчет» диалогового окна «Параметры».
Теперь Excel использует точность, отображаемую на экране, во всех своих вычислениях и конкатенациях вместо того, чтобы выполнять вычисления с полной 15-значной точностью, которую он обычно поддерживает. Хотя этот подход может быть приемлемым для некоторых пользователей, для других он создаст больше проблем, чем решит. Вам нужно будет определить, можете ли вы жить с более низкой точностью, чтобы вывод был отформатирован так, как вы ожидаете.
Еще один подход – создать вашу собственную определяемую пользователем функцию, которая будет возвращать то, что отображается для целевой ячейки, а не для того, что там хранится. В этом отношении отлично подойдет следующий макрос:
Function FmtText (rng As Range) Application.Volatile FmtText = rng.Cells (1) .TextEnd Function
To используйте этот макрос, вы должны использовать такую формулу на своем листе:
= FmtText (A1) & «:» & FmtText (B1)
Источник: