Как бы я написал код VBA, который преобразует столбцы таблицы из текста в даты при каждом изменении листа? - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь автоматизировать анализ данных для клиента. Их система экспортирует данные в текстовом формате, включая даты. Чтобы даты можно было использовать в моем анализе, их необходимо преобразовать из текста в даты. Вручную, единственный способ, который я знаю, - это использовать функцию преобразования текста в столбцы, устанавливая ее в качестве разделителя без разделителей, а затем форматируя как даты (поскольку простое форматирование как даты изменяет формат ячейки, но фактически не скрывает входные данные). Кроме того, я хотел бы, чтобы этот код запускался каждый раз, когда рабочая таблица изменяется. (В частности, каждый квартал пользователь, не обладающий специальными знаниями, будет копировать и вставлять новые данные ниже старых данных, и столбец таблицы снова необходимо будет преобразовывать). Мои данные уже отформатированы в виде таблицы, поэтому я могу сослаться на «Table2 [Date Submitted]», чтобы охватить весь столбец данных, даже когда данные расширяются.

Я довольно неопытен в VBA и имею толькобазовые знания. Я безуспешно пытался воссоздать текст в подпунктах столбцов.

Sub ConvertDates()
'
' ConvertDates Macro
' Converts text dates to usable excel dates MM/DD/YYYY
'
' Keyboard Shortcut: Ctrl+Shift+D
'
    Worksheets(3).Range("Table2[Date Submitted]").TextToColumns Destination:=Range("B9"), DataType:=xlDelimited,
        TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, _
        3)
End Sub

Подпункт неполный. Но мне также нужна помощь, опираясь на это.

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Чтобы изменить даты (я предполагаю, что текст отформатирован как «ММ / ДД / ГГГГ»), затем попробуйте что-то вроде:

Sub ChangeDateFormat()

Dim rng As Range
With Sheet1 'Change to your referenced sheet's CodeName
    Set rng = .Range("Table2[Date Submitted]")
    rng.TextToColumns Destination:=rng, DataType:=xlFixedWidth, FieldInfo:=Array(0, xlMDYFormat)
    rng.NumberFormat = "MM/DD/YYY"
End With

End Sub
0 голосов
/ 22 октября 2019

Если я правильно понимаю вашу проблему, вы получите "цифры", которые на самом деле являются текстовыми. Пока они выглядят как цифры;они не.

Даты в Excel - это просто числа. Вы пытались создать переменную, скажем, tempHolder и dim? Затем сохраните одну из ячеек в этой переменной и запишите ее в новую ячейку. в типе B1:

=a1*b1 

Это должно преобразовать значение в число. Но мне нужен пример, чтобы поиграть.

Напишите цикл (при условии, что это работает), и у вас есть способ конвертировать

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