2014-11-28 3 views
0

Как использовать функцию DATEVALUE в коде VBA, чтобы преобразовать ячейку из текста в Date.Как использовать функцию DATEVALUE в коде vba

Ex. У меня есть E1= "29/10/2014"

EXCEL признает это как текст. Если я дважды щелкнул по ячейке, он правильно изменит ее на сегодняшний день.

Я хочу запустить макрос и преобразовать все эти значения в Date. Я должен сказать, что у меня есть лист excel, Range A1:BJ10223 и столбцы с датами - это E, H, S, V, AB, AF, AJ, AL, AO, AS, AY, BE, BH. Не все даты отражаются как текстовые значения. Некоторые из них в порядке.

+1

Исследование моего друга исследования! Попробуйте Google! –

ответ

1

Наиболее целесообразный метод, который я знаю для преобразования значений псевдотекста в значения фактической даты, осуществляется с помощью команды Data ► Data Tools ► Text-to-Columns, которая может быть закодирована в VBA.

Sub TXT2DMY() 
    Dim v As Long, vCOLs As Variant 
    vCOLs = Array("E", "H", "S", "V", "AB", "AF", "AJ", "AL", "AO", "AS", "AY", "BE", "BH") 
    With ActiveSheet 
     For v = LBound(vCOLs) To UBound(vCOLs) 
      If CBool(Application.CountA(.Columns(vCOLs(v)))) Then _ 
       .Columns(vCOLs(v)).TextToColumns Destination:=.Columns(vCOLs(v)), _ 
        DataType:=xlFixedWidth, FieldInfo:=Array(0, 4) 
     Next v 
    End With 
End Sub 

Разница может быть не заметна на небольших листах, но ничего более 500 строк данных, с тем, что многие столбцами, безусловно, будет быстрее.

+0

Он работал 100% Спасибо – user3333321

0

Эквивалентная функция в VBA равна CDate, которая преобразует свой аргумент (формально Variant) в тип Date.

+1

Мне интересно, почему бы вы (из всех людей) дать ответ, не позволив пользователю хотя бы приложить усилия? :) BTW 'DATEVALUE' также может использоваться в VBA :) –

+0

Документация для VBA, как известно, бедна. Действительно, DATEVLAUE может использоваться, но «CDate» более естественен в VBA, а также работает в других офисных пакетах. – Bathsheba

+1

'Документация для VBA, как известно, бедна.' Действительно? Умм, я бы не согласился. Возможно, вы захотите увидеть эту ссылку (http://wikisend.com/download/314576/untitled.png) –