VBA String to Date | Перетворення рядкових значень на дату в Excel VBA

Excel VBA String to Date

У Vba існує метод, за допомогою якого ми можемо перетворити заданий рядок на дату, а метод відомий як функція CDATE у vba, це вбудована функція у VBA, і частини, необхідні для цієї функції, це спочатку перетворити рядок у число, а потім ми перетворюємо дане число в дату. Формат результату залежить лише від формату системної дати.

Однією з найпоширеніших проблем, з якими ми всі стикаємось з Excel, є “Дата та час”, і вони часто зберігаються як текстові значення і спочатку залишаються непоміченими. Але коли їм потрібно буде використати цей час, ми дізнаємось, що ці значення зберігаються як текст і взагалі не знають, як з ними поводитися. “Дата і час” - це дві об’єднані речі в одному елементі, але коли ці значення зберігаються як текстові, з ними боляче працювати.

Як перетворити значення рядків на дату?

Ви можете завантажити цей шаблон VBA String to Date Excel тут - VBA String to Date шаблон Excel

Приклад №1

Як тільки змінна VBA оголошена і призначена як String, все, що присвоєно цій змінній, буде оброблятися лише як рядок. Для прикладу перегляньте наведений нижче код.

Код:

 Sub String_To_Date () Dim k As String k = "10-21" MsgBox k End Sub 

У наведеній вище кодовій змінній “k” визначено як тип даних “String”, і для цієї змінної ми призначили значення як “10-21”.

Добре, давайте запустимо код і подивимося, що ми отримаємо у вікні повідомлення у VBA.

Ми отримали значення лише 10-21, але зазвичай ці значення є датою, а не рядковими значеннями. Отже, навіть незважаючи на те, що присвоєним типом даних є «Рядок», ми все одно можемо перетворити на сьогодні за допомогою функції перетворення типів даних CDATE VBA.

Код:

 Sub String_To_Date () Dim k As String k = "10-21" MsgBox CDate (k) End Sub 

У наведеному вище, перш ніж ми покажемо результат змінної “k” у вікні повідомлення, ми призначили функцію CDATE. Зроблено невелике коригування, давайте подивимося, наскільки великий вплив це справляє.

Тепер ми бачили б результат як «Дата», а не як значення «Рядок».

Приклад №2

Тепер подивіться на приклад наведеного нижче коду.

Код:

 Sub String_To_Date () Dim k As String k = 43599 MsgBox k End Sub 

На даний момент часу код вище буде відображати результат як «43599», як ми призначили вище.

Але як тільки ми використовуємо функцію CDATE, вона перетвориться на значення дати.

Код:

 Sub String_To_Date () Dim k As String k = 43599 MsgBox CDate (k) End Sub 

Результат після застосування функції CDATE такий.

Оскільки Excel зберігає дату як серійні номери, призначений нам серійний номер 43599 дорівнює даті 14.05.2019, коли застосовується формат дати.

Ми також можемо застосувати формат до дати як «ДД-МММ-РРРР», щоб точно прочитати дату.

Код:

 Sub String_To_Date1 () Dim k As String Dim DateValue As Date k = 43599 DateValue = CDate (k) MsgBox Format (DateValue, "DD-MMM-YYYY") End Sub 

У наведеному вище я оголосив одну додаткову змінну для зберігання результату. Для цієї змінної я застосував функцію перетворення CDATE.

Далі я використав функцію FORMAT, щоб застосувати формат формату “DD-MMM-YYYY”, і результат буде таким, як показано нижче.

Завдяки цьому ми можемо чітко прочитати частину дня та частину місяця. Це також залежить від формату вашої системної дати в Excel, оскільки мій формат системної дати був "ММ-ДД-РРРР", він відображався таким чином, але це не повинно бути перешкодою для форматування.

Приклад №3

Тепер ми побачимо насправді, як дати форматуються як текстові значення в комірках робочого аркуша. Нижче наведено зображення дат, що зберігаються у вигляді тексту на аркуші.

У стовпці А від А2 до А12 ми маємо значення, що шукають дату, але коли ми переглядаємо вкладку формату, він відображає формат "Текст". Тепер нам потрібно перетворити ці значення з тексту на дату.

Нижче наведено код, який я написав для перетворення відформатованих у тексті значень дат у фактичні дати.

Код:

 Sub String_To_Date2 () Dim k As Long 'Дані знаходяться в більш ніж одній комірці, тому потрібно проходити цикли через кожну комірку' Open For Loop For k = 2 To 12 'Дані починаються з 2-го рядка і закінчуються на 12-му рядку, тому 2-12 Клітинки (k, 2). Значення = CDate (Клітинки (k, 1). Значення) Далі k Кінець Sub 

Якщо ви запустите код, це дасть нам нижченаведений результат.

Що слід пам’ятати

  • CDATE - це функція перетворення типу даних, але вона може використовуватися для перетворення збереженої дати VBA у фактичні значення дати.
  • Результат формату функції CDATE залежить лише від формату системної дати.
  • Дати зберігаються у форматі Excel як серійні номери, тому для відображення їх як дати потрібно форматування.