VBA низ до дата | Преобразуване на низови стойности в дата в Excel VBA

Excel VBA String to Date

Във Vba има метод, чрез който можем да конвертираме даден низ в дата и методът е известен като CDATE функция във vba, това е вградена функция във VBA и частите, необходими за тази функция, е първо да преобразуваме низа в число и след това преобразуваме даденото число в дата. Форматът на резултата зависи само от формата на системната дата.

Един от често срещаните проблеми, с които всички се сблъскваме с Excel, е „Дата и час“ и често се съхраняват като текстови стойности и първоначално остават незабелязани. Но когато от тях се изисква да използват това време, ще разберем, че тези стойности се съхраняват като текст и изобщо не знаят как да се справят с тях. „Дата и час“ са две комбинирани неща в един елемент, но след като тези стойности се съхраняват като текстови стойности, е трудно да се работи с тях.

Как да конвертирате низови стойности в дата?

Можете да изтеглите този шаблон на VBA String to Date Excel тук - VBA String to Date Excel Template

Пример # 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, но обикновено тези стойности са дата, а не низови стойности. Така че, въпреки че присвоеният тип данни е „String“, ние все пак можем да конвертираме към дата, като използваме функцията за преобразуване на типа данни CDATE VBA.

Код:

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

По-горе, преди да покажем резултата от променливата „k“ в полето за съобщение, сме присвоили функцията CDATE. Извършва се малка корекция, нека видим колко голямо въздействие оказва.

Сега бихме виждали резултата като „Дата“, а не като стойност „String“.

Пример # 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, така че е необходимо форматиране, за да се покажат като дати.