Как преобразовать yyyy-mm-dd-в стандартную дату в Excel?
Формат даты в vba excel
У меня есть столбец даты, который содержит даты смешанного формата. Например:
В данном случае в одном столбце есть два разных формата: дд.мм.гггг и мм/дд/гггг. Я хочу изменить формат всех дат в столбце yyyyy-mm-dd с помощью сценария VBA. Вот что у меня есть на данный момент:
Поскольку я новичок в VBA, прошу простить меня за отсутствие элегантности. Если я изменю аргумент в функции Format с yyyyy-mm-dd на dd/mm/yyyyy, она работает, но только для дат в формате mm/dd/yyyy, оставляя столбцы dd.mm.yyyy нетронутыми. Буду признателен за любой совет.
Формат данных в vba excel
6 ответов
Решение 8 [2011-08-18 14:21:00]
ОБНОВИТЬ: НОВЫЙ ОТВЕТ
Настало время найти решение, которое поможет справиться с задачей! В подпрограмму включена функция, выполняющая замену (это отличная функция!). Выполните команду, и все записи в столбце A будут исправлены.
Размещение функций в один модуль:
Как это работает.. У меня есть отличная функция RegexReplace, которая позволяет выполнять замену с использованием регулярных выражений. Submearly петли через вашу колонку A и заменяет регулярное выражение для тех двух случаев, о которых вы упомянули. Причина, по которой я сначала использую Instr(), — это определить, нужна ли ему замена и какой вид. Вы можете технически пропустить это, но делать замену на ячейках, которые не нужны, это действительно дорого. В конце я отформатирую ячейку в пользовательский формат даты независимо от того, что внутри для безопасной меры.
Если вы не знакомы с Regex (для ссылки: http://www.regular-expressions.info/), я использую следующее выражение:
- Каждый элемент в() — группы захвата — иначе, материал, который вы хотите испортить
- d обозначает число [0-9].
- <2>означает 2 of, а <4>- 4 of. Я был здесь явно для безопасности.
- efore. в первой замене необходимо, так как "." имеет особое значение.
- В регулярном выражении VBA вы ссылаетесь на группы захвата, используя
Примеры
Использование функции Format в выражении. Функцию Format можно использовать в любом выражении. Например, вы можете использовать его в запросе как часть псевдонима поля или в свойстве Data текстового поля в форме или отчете. Вот пример выражения, которое можно использовать в свойстве Filter отчета, чтобы отобразить только записи за предыдущую неделю.
В этом примере в источнике записей отчета есть поле "Дата", содержащее дату изменения каждой конкретной записи и использующееся в отчете. Во время выполнения отчета результаты фильтруются и отображаются только те записи, в которых значение недели в поле "Дата" (Format([Дата],"ww")) равно прошлой неделе (Format(Now(),"ww")-1).
Использование функции Формат в коде VBA
Примечание: В следующих примерах показано использование этой функции в модуле Visual Basic for Applications (VBA). Для получения дополнительной информации о работе с VBA выберите Developer’s Reference из выпадающего списка рядом с полем поиска и введите одно или несколько слов в поле поиска.
В данном примере показаны различные варианты использования функции Format для форматирования значений с помощью предварительно заданных форматов и форматов, определенных пользователем. Для разделителя даты ( /), разделителя времени ( и литералов AM/ PM фактические отформатированные выходные данные, отображаемые системой, зависят от ее региональных параметров. В среде разработки для отображения времени и даты используется краткий формат времени и даты, заданный в региональных параметрах программы. При отображении в работающей программе применяется краткий формат даты и времени из региональных параметров системы, который может отличаться от региональных параметров программы. В этом примере используется локаль "Английский (США)".
MyTime и MyDate отображаются в среде разработки с использованием текущих параметров системы для формата короткого времени и даты.
Использование функции форматирования для пустых строк
В Microsoft Access версии 2.0 и более ранних версиях функцию Format можно использовать для возврата одного значения для пустой строки и другого значения для значения. Например, вы можете использовать выражение формата, такое как следующее, с функцией Format, чтобы вернуть соответствующее строковое значение из кода:
Используя Microsoft Access 97 и более поздние версии, вы должны проверить, является ли значение Null, и на основе результата вернуть соответствующее значение. Если вы используете функцию Format в выражении, вы можете использовать функцию IIf, чтобы:
varX = IIf(IsNull(varStrX),"Null", Format(varStrX, "@;ZLS"))
Это изменение применяется только при использовании функции Format для форматирования строк в зависимости от того, пустая это строка или строка со значением Null. При использовании функции Format другие выражения форматирования работают так же, как и в предыдущих версиях.
Если вы конвертируете базу данных из Microsoft Access 2.0 или более ранней версии в Microsoft Access 2002 или более позднюю версию, вы должны изменить текст приложения так, чтобы проверка нулевого регистра выполнялась раздельно.
no. группы. Вот как я переворачиваю порядок из 3-х элементов.
Для этого вам не нужен VBA. Эта формула однослойной электронной таблицы поможет вам в этом:
Это предполагает, что день и месяц всегда указываются как двузначные числа (например, всегда 03, а не только 3), а год имеет четыре цифры (т.е. "ограничен" до 1000-9999). Но если это не относится к вам, то формула может быть легко скорректирована в соответствии с вашими потребностями.
Проверьте, делает ли он то, что вы хотите. Возможно, вам придется немного подкорректировать его в соответствии с вашим применением.
Надеюсь, что это будет полезно для вас!
1 шт [2014-08-29 22:17:00]
Жан-Франсуа Корбетт предлагает формулу, которая работает, но может быть сокращена более чем наполовину из-за отказа от сообщения об ошибке (на основании того, что #VALUE! является информативным) и другого IF, двух DATE, путем применения IFERROR вместо ISERROR и SUBSTITUTE вместо набора LEFT, MIDDLE, RIGHT:
Это относится к интерпретации, упомянутой @Issun в комментарии OP, и предполагает, что вывод будет связан с ячейками, отформатированными в формате yyyy-mm-dd.
Его можно записать с помощью подпрограммы, подобной этой:
Когда я пытаюсь вывести дату dd/mm/yyyyy hh в Excel, дата появляется, как и ожидалось:
Как вы можете видеть выше, я отобразил дату и время в следующем виде:
Но я не могу вывести дату в формате dd/mm/yyyyy hh:mm:ss, вывод выглядит следующим образом
Как преобразовать yyyy-mm-dd-в стандартную дату в Excel?
Вы импортировали листы, даты которых отформатированы в формате yyyy-MM-DD-DD. Как преобразовать эти даты в стандартный формат даты mm / dd / yyyy, чтобы они работали? Ниже будут рассмотрены некоторые методы решения этой проблемы.
Преобразование гггг-мм-дд в мм / дд / гггг с помощью формул
Следующие две формулы преобразуют формат даты yyyy-mm-dd к стандартному формату даты.
Выберите ячейку, в которую вы поместите новый формат даты, выберите одну из формул, приведенных ниже, а затем нажмите кнопку Перейти к квадрату.
=Text(DATE(LEFT(A1,4),MID(A1,6,2),RIGHT(A1,2)),»mm/dd/yyyy»)
Преобразование гггг-мм-дд в мм / дд / гггг с помощью Kutools for Excel
Если есть даты с несколькими форматами, которые нужно преобразовать в стандартный формат даты, можно попробовать применить утилиту Convert to Date в Kutools для Excel.
После установки Kutools for Excel выполните следующие действия: (Загрузите Kutools for Excel бесплатно прямо сейчас!)
Выберите даты, которые вы хотите преобразовать, нажмите Kutools > Content > Convert to Date .
Затем все выбранные даты были преобразованы в стандартный формат даты.
В диалоговом окне Преобразовать в дату выберите даты, затем нажмите Восстановить.