Форматирование чисел в Excel.Рассматривайте мою ячейку как число, но оставьте ее форматирование в покое!(т.е. трейлинг 0) - PullRequest
4 голосов
/ 27 июня 2011

У меня есть (кажется, так и должно быть) простая проблема. Мне нужно иметь возможность сказать Excel (в vba), что содержимое ячейки числовое, но я не хочу применять к нему какое-либо форматирование. Мне нужно, чтобы мои конечные нули оставались такими, какие они есть. Я скучаю по чему-то невероятно простому?

Обновление:

Я получаю XML-данные из запроса и помещаю их в электронные таблицы. Но допустим, что в одной из ячеек есть 589.950000 Мне нужно показать эти дополнительные нули для пользователя (не спрашивайте меня, почему, им просто нужна точность), но Excel преобразует его в 589.95. Мне также нужно, чтобы они могли выполнять вычисления электронных таблиц в этой ячейке (поэтому я не могу отформатировать ее как текст).

Обновление 2:

Дальнейшее уточнение. Допустим, у меня есть 4 значения, которые я собираюсь поместить в столбец

595.56000
15.00
90.00050
1919.120000000

существует ли один числовой формат, который я могу применить к этому столбцу, который будет отображать эти точные числа?

Ответы [ 5 ]

1 голос
/ 27 июня 2011

Вы не можете сделать это с одним пользовательским форматом.

То, что вы можете сделать, - это создать макрос, который выполняет ввод для вас и изменяет каждый формат ячейки, поскольку он помещает в него значение.Вы можете использовать Macro Recorder, чтобы понять, с чего начать.

0 голосов
/ 19 декабря 2013

Не могу поверить, что я только что наткнулся на это ...

Я знаю, что он старый, но мог бы дать очень простой ответ:

Пользовательский формат и просто используйте символ @. Будет рассматриваться как целое число и оставлено точно так же, как напечатано в ячейке.

0 голосов
/ 27 июня 2011

Я думаю, что вы можете сделать:

Val(Range("A1").Value)

Что будет переводить текст в число

0 голосов
/ 27 июня 2011

Если вам известно необходимое вам количество десятичных знаков, вы можете использовать что-то вроде следующего:

Range("A1").NumberFormat = "0.000000"

Полагаю, вы могли бы даже проявить фантазию, проверить количество конечных нулей в коде и отрегулировать форматирование по необходимости.

UPDATE:

Вот функция VBA, которая принимает число в виде строки и возвращает соответствующую строку NumberFormat.

Private Function trailing(strNum As String) As String
'From number entered as string, returns Excel Number format to preserve trailing zeroes in decimal.
Dim decpt As Integer
Dim aftdec As Integer
Dim strTmp As String

decpt = InStr(strNum, ".")
If decpt = 0 Then
    strTmp = "0"
Else
    aftdec = Len(strNum) - decpt
    strTmp = "0."
    If aftdec <> 0 Then
        For i = 1 To aftdec
            strTmp = strTmp & "0"
        Next
    End If
End If
trailing = strTmp
End Function
0 голосов
/ 27 июня 2011

Вы имеете в виду, что хотите использовать значение ячейки как числовое, но вы не хотите изменять действительное значение ячейки?

В vba вы можете использовать CInt(yourvar) для преобразования строки в число. Таким образом, полученное вами значение будет целым числом.

[править] Кстати, если вы хотите отобразить или вернуть значение в ячейку нужного формата, вы можете использовать функцию Format ( expression, [ format ] ) в Excel vba

[править 2]

Поскольку вы не можете предсказать, сколько у вас будет нулей, я не вижу ни одного числового формата, который бы работал. Возможно, вам лучше использовать текстовый формат , как предложил Ланс Роберт. Чтобы использовать формулу для текстовых ячеек, вы можете использовать формулу VALUE, чтобы преобразовать ячейку в ее число. Если вам это нужно в диапазоне, вам, возможно, придется использовать формулы массива , например: {=SUM(IF(ISTEXT(A1:A4);VALUE(A1:A4);A1:A4))}.

Пожалуйста, дайте нам знать, если вам нужна помощь по этим формулам.

С уважением,

Макс

...