Как заставить Excel распознавать метки времени как метки времени, а не как строки?
Если я выполняю поиск и замену на "/" на "/", это исправляет это в большинстве файлов:
Cells.Replace What:="/", Replacement:="/", LookAt:=xlPart, SearchOrder :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
У меня есть кусок кода, который проверяет, находится ли он по-прежнему в неправильном формате, путем преобразования в формат «запятая» и проверки, содержит ли ячейка какие-либо символы «/», а затем разрывает строку, которая срабатывает в этом случае, чтобы предупредить менячто мне нужно вручную найти и заменить этот файл.Если я остановлю макрос при сбое и запустлю его вручную (Crtl + h, Enter), то он заработает, и я смогу перезапустить макрос для завершения стандартизации.Мне нужен способ автоматизации этого.
У меня> 2000 .csv файлов похожего, но не идентичного формата.Каждая из них содержит ~ 350 переменных, каждая со своей меткой времени и столбцом данных.Я написал код, который форматирует его в пригодный для использования формат.Исходный csv имеет временные метки в формате «ДД / ММ / ГГГГ чч: мм: сс», как на моем компьютере и в Excel по умолчанию.
Excel, по-видимому, случайным образом решает, что не может распознавать около четверти временных меток файлов, и вместо этого интерпретирует их как строки.Это можно исправить, щелкнув по ячейке, а затем щелкнув по ячейке, а затем Excel распознает ее как метку времени.Мне нужны распознанные временные метки, чтобы я мог интерполировать значения в стандартную частоту дискретизации, так как Excel не может интерполировать, используя значения, которые он интерпретирует как строки.
Зачастую для каждого файла существует более 100 000 временных меток, поэтому это не нужно делать вручную.не вариант.
Я пытался использовать SendKeys.Кажется, проблема в том, что он открывает диалог поиска и замены для редактора сценариев VBA, а не для таблицы Excel.Ранее я пытался сместить фокус, вызывая:
Windows(windowname).Activate
ActiveWorkbook.Application.SendKeys("^h")
Я также пытался:
Windows(windowname).Application.SendKeys("^h")
Что приводит к вызову функции поиска и замены в редакторе сценариев VBA.
У меня нет ярлыка для запуска макроса.
Я пробовал Matlab, но он не может работать с заголовком файла или столбцами, заполненными текстом.Я хотел бы сохранить все данные.
Я использовал Макро-рекордер, чтобы записать, как я выполняю поиск и замену, что приводит к:
Sub Fixer()
'
' Fixer Macro
'
'
Selection.Replace What:="/", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Но это не работает, когдавы запускаете его в том же файле.
Я ожидаю, что он преобразует формат строки "ДД / ММ / ГГГГ чч: мм: сс" в формат даты и времени, который затем я могу преобразовать в десятичный формат, который язатем можно использовать для интерполяции значений в пригодный для использования формат.Вместо этого я не получаю сообщения об ошибке, и ничего не происходит.
Пример строки временных меток даты из необработанного CSV: «31/03/2019 14: 55: 57,1.0000000149,31 / 03/2019 14:55: 57,14.6,31 / 03/2019 14: 55: 57,57.86,31 / 03/2019 14: 55: 57,0.175000000000068 "
Таким образом, отметка времени" 31.03.2009 14:55: 57 "Я хочу преобразовать в" 43555.62218750000 "
Я мог бы использовать скрипт для деконструкции строки, вычисления десятичного эквивалента и перезаписи ячейки, но это займет слишком много времени.