Ответ 1
Используйте Range("A1").Text
вместо .Value
опубликовать комментарий:
Почему?
Поскольку свойство .Text
объекта Range возвращает то, что буквально видимо в электронной таблице, поэтому, если ваша ячейка отображает, например, i100l:25he*_92
, тогда < - Text
вернет именно то, что она в ячейке, включая любое форматирование.
Свойства .Value
и .Value2
возвращают то, что хранится в ячейке под капотом, за исключением форматирования. Специально .Value2
для типов дат, он вернет десятичное представление.
Если вы хотите углубиться в смысл и производительность, я просто нашел this article
, который кажется хорошим руководством
другое редактирование
Здесь вы идете @Santosh
введите MANUALLY) значения из DEFAULT (col A) в другие столбцы
Не форматировать колонку A вообще
Форматировать столбец B как текст
Формат столбца C как Дата [dd/mm/yyyy]
Формат столбца D в процентах
сейчас,
вставьте этот код в модуль
Sub main()
Dim ws As Worksheet, i&, j&
Set ws = Sheets(1)
For i = 3 To 7
For j = 1 To 4
Debug.Print _
"row " & i & vbTab & vbTab & _
Cells(i, j).Text & vbTab & _
Cells(i, j).Value & vbTab & _
Cells(i, j).Value2
Next j
Next i
End Sub
и Analyse
вывод! Его очень легко, и я не могу сделать больше, чтобы помочь:)
.TEXT .VALUE .VALUE2
row 3 hello hello hello
row 3 hello hello hello
row 3 hello hello hello
row 3 hello hello hello
row 4 1 1 1
row 4 1 1 1
row 4 01/01/1900 31/12/1899 1
row 4 1.00% 0.01 0.01
row 5 helo1$$ helo1$$ helo1$$
row 5 helo1$$ helo1$$ helo1$$
row 5 helo1$$ helo1$$ helo1$$
row 5 helo1$$ helo1$$ helo1$$
row 6 63 63 63
row 6 =7*9 =7*9 =7*9
row 6 03/03/1900 03/03/1900 63
row 6 6300.00% 63 63
row 7 29/05/2013 29/05/2013 41423
row 7 29/05/2013 29/05/2013 29/05/2013
row 7 29/05/2013 29/05/2013 41423
row 7 29/05/2013% 29/05/2013% 29/05/2013%