Страницы: 1
RSS
Сделать текст как дату через VBA
 
Добрый день.
При выгрузке из 1С даты получаются как текст. Когда вручную выделяю столбец и просто заменяю точку на точку, то они становятся в формате дат и через фильтр становится возможно фильтровать по месяцам, годам, сортировать по возрастанию/убыванию и т.д. Но когда то же самое через Replace делаю макросом, то данные ячейки не становятся датами, а так и остаются просто текстом.
Как это побороть? Если хочется делать не руками каждый раз, а через VBA.
Файл приложил.

Спасибо.
Изменено: whateverlover - 18.12.2019 12:16:54
 
Для всего листа, будьте внимательны заменит формулы на значения на всем листе
Код
ActiveSheet.UsedRange.FormulaLocal = ActiveSheet.UsedRange.Value
Для диапазона, заменит только в указанном диапазоне
Код
ActiveSheet.Range("A2:B13").FormulaLocal = ActiveSheet.Range("A2:B13").Value
Изменено: msi2102 - 18.12.2019 13:09:48
 
Код
Sub dfDate()
Dim r As Range
For Each r In Range("A2:B13")
r.Value = CDate(r.Value)
Next r
End Sub
 
вот когда вручную выделяете, формат применяете, точки на точки заменяете...
запишите эти действия макрорекордером, потом будет достаточно выполнить этот макрос и все готово
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
whateverlover: то же самое через Replace делаю макросом
есть метод Range.Replace, а есть строковая функция Replace$. Подозреваю, что вы используете как раз функцию, а она данные не преобразовывает. Используйте метод - тогда будет "тоже самое", а пока нет.
Если говорите о коде, то прикрепляйте его в пост. Вариант:
Код
ActiveSheet.UsedRange.Replace ".", ".", xlPart, xlByRows, False, False, False
Изменено: Jack Famous - 18.12.2019 12:46:53
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
msi2102, pantel1987, спасибо, оба варианта работают

Цитата
Ігор Гончаренко написал: запишите эти действия макрорекордером, потом будет достаточно выполнить этот макрос и все готово
Макрорекордер также делает через Replace, после этого почему то датой не становится.
Код
Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _


Цитата
Jack Famous написал:  Вариант...
Делал то же самое, что выше делал макрорекордер, я так понимаю это и есть метод. Но это не меняет формат на дату, хотя вручную меняет.
Не знаю на что влияет ReplaceFormat, на всякий случай попробовал и True и False, дата остается как текст.
Код
Columns("A:B").Select
    Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
 
Аналогичная тема.
Владимир
 
Цитата
Ігор Гончаренко написал:
вот когда вручную выделяете, формат применяете, точки на точки заменяете...
вы вот этот пункт "формат применяете" не провтыкали случайно?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх