Для дат в формате Excel в формате «ГГГГ МММ ДД 00: 00: 00.000» необходимо, чтобы даты были в формате ДД-МММ-ГГГГ - PullRequest
0 голосов
/ 17 июня 2009

Есть ли способ запрограммировать макрос для преобразования всех дат в рабочем листе, чтобы перейти от "2009 APR 01 00: 00: 00.000" к формату даты "dd-mmm-yyyy"? У меня есть набор данных, который регулярно извлекается, и все даты в 40+ столбцах в 2009 году в основном бесполезны. АПРЕЛЬ 01 00: 00: 00.000, любые идеи о том, как создать этот тип макроса, и возможность поделиться с другими с помощью того же данные

Спасибо!

Ответы [ 4 ]

2 голосов
/ 18 июня 2009

Function GetDateInMyFormat(exampleDate As String) As Date
On Error GoTo e
Dim year As String
Dim month As String
Dim day As String

Dim wantedDate As String

year = Mid(exampleDate, 1, 4)
month = Mid(exampleDate, 6, 3)
day = Mid(exampleDate, 10, 2)

wantedDate = year & "/" & month & "/" & day
GetDateInMyFormat = CDate(wantedDate)
Exit Function

e:

End Function

Вы можете создать XLA (XL addin) и добавить эту функцию как часть XL VBA.
Загрузите надстройку, используя диалоговое окно надстройки Excel. Таким образом, функция будет доступна для рабочих книг.

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

использование: GetDateInMyFormat («2009 apr 01 00: 00: 00.000»)
возвращается 01.04.2009

2 голосов
/ 18 июня 2009

Похоже, ваши даты всегда имеют одинаковую длину строки. Вот одно из возможных решений:

orgDate = "2009 APR 01 00:00:00.000"

newDate = mid(orgDate,10,2) & "-" & mid(orgDate,6,3) & "-" & left(orgDate,4)

Выполните итерацию по каждой ячейке с помощью цикла и выполните приведенную выше строковую операцию, затем поместите newDate обратно в ячейку.

0 голосов
/ 17 июня 2009

У меня нет полного ответа для вас, но вот что я бы сделал примерно:

  1. Получите диапазон всей электронной таблицы, чтобы вы знали, что вам нужно перебирать.
  2. Итерация по каждой ячейке.
  3. Находясь в каждой ячейке, убедитесь, что это формат даты.
  4. Если формат ячейки уже в формате даты, используйте следующий код: Selection.NumberFormat = "dd-mmm-yyyy".
  5. Если нет, то переходите к следующей ячейке.

Удачи!

0 голосов
/ 17 июня 2009

Предполагая, что Excel распознает их как даты, вы можете просто изменить форматирование ячейки на правильный формат даты. Выделите столбец, щелкните правой кнопкой мыши -> отформатировать ячейки ...

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