Конвертировать все строки в столбце с форматом даты в текстовый формат - PullRequest
0 голосов
/ 06 февраля 2020

Screenshot DATE format to Text Format

Мне нужно преобразовать столбец с датами, отформатированный в форматах даты, в текстовый формат и, если возможно, в обратном порядке. Я могу применить функцию листа ТЕКСТ, заполнить, вставив копию или дважды щелкнув, а затем скопировать / вырезать вспомогательный столбец и вставить как значение в исходный столбец и записать макрос, но есть ли способ сделать это без выбора / активации, автозаполнения, использования вспомогательных столбцов (например, «H» и «I») в этом примере? Приведет ли какая-либо функция vba вместо функции рабочего листа к большей эффективности?

Sub DateFormatToText()
    Range("H2").Select
    ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],""dd/mm/yyyy"")"
    Range("H2").Select
    Selection.AutoFill Destination:=Range("H2:H20")
End Sub

Просматривая, я узнал, что это не оптимальные коды.

Ответы [ 3 ]

2 голосов
/ 06 февраля 2020

Вы можете попробовать как ниже:

Range("H2:H" & Range("G" & Rows.Count).End(xlUp).Row).Formula = "=TEXT(G2,""dd/mm/yyyy"")"
1 голос
/ 06 февраля 2020

Без вспомогательных столбцов, без формул листа

Чтобы изменить записи даты в том же столбце, что-то вроде:

Option Explicit
Sub colGtoText()
    Dim v, i As Long, r As Range, ws As Worksheet

'define the working area of Column G entries  
Set ws = ThisWorkbook.Worksheets("sheet1")
With ws
    Set r = .Range(.Cells(1, "G"), .Cells(.Rows.Count, "G").End(xlUp))
    v = r.Value 'read into vba array for faster processing
End With

With r
    .NumberFormat = "@" 'change to text format

    'process each entry to the appropriately formatted text string
    For i = 1 To UBound(v)
        If IsDate(v(i, 1)) Then v(i, 1) = Format(v(i, 1), "mm/dd/yyyy")
    Next i

    'write results back to the range from the vba array
    .Value = v
End With

End Sub
0 голосов
/ 06 февраля 2020
=TEXT(G2,"dd-mm-yyyy")

используется - операция либо с использованием функции замены

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...