Подтвердить что ты не робот

Значение ячейки Excel как строка не будет храниться как строка

Я не могу получить этот код здесь, чтобы захватить содержимое ячейки и сохранить как строку. Я получаю двойной:
54.6666666667 вместо N03:DM: (пример содержимого ячейки).

Если я использую Cstr(Sheet1.Cells(i, 5).Value), я все равно получаю тот же результат.

Любая помощь будет оценена.

Option Explicit
Private Sub GetAddress()

Dim varAdd As String
Dim i As Integer

    For i = 2 To 327
        If varTag = Sheet1.Cells(i, 2).Value Then
           varAdd = Sheet1.Cells(i, 5).Value
           varAdd = Left(varAdd, 7)
           Sheet3.Cells(incR, 2).Value = varAdd
           Exit For
        End If   
    Next i

End Sub

Скриншот страницы enter image description here

4b9b3361

Ответ 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 в процентах
Dont Format column A, Format B as TEXT, C as Date, D as Percentage
сейчас,
вставьте этот код в модуль

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%