Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Макрос преобразования даты в формат даты (excel), Необходимо доделать макрос
 
Имеется макрос, который обрабатывает массив и в первом столбце создает даты, только они не преобразуются в даты - экселевского формата, которые потом при смене формата в числовой становятся числом, необходимо помочь.
 
Val()
CDate()
 
а как это выглядит в коде?
 
даты в Excel фактически хранятся как число
а какой формат применили - так и видите, на само значение, хранящееся в ячейке - это не влияет
но если даты сохранить как текст - тогда смена формата никак на них не отразится, (текст он и в Африке текст) но работа с ними как с датами становиться проблематична во многих ситуациях.
если Вы точно понимаете что Вам нужно, то конечно можете преобразовать данные строго под свои потребности (а потом самостоятельно расхлебывать результаты этих преобразований)  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
есть такая ошибка при преобразовании, после преобразования макросом даты не становятся числом, убедитесь сами, менял формат на числовой "0.00" толку нет, нужно как то приминить к вновь образованным датам функциию CDate(), но я не знаю как
 
они не являются числами и на исходном листе

дабавьте в конце своего макроса цикл
Код
Selection.NumberFormat = "m/d/yyyy"
For Each c In ActiveSheet.UsedRange.Columns(1).Cells
  If IsDate(c) Then c.Value = CDate(c.Value)
Next
Application.ScreenUpdating = True
или сделайте это 1 раз с данными на исходном листе
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
А если без цикла? из за цикла скорость обработки увеличилась
 
Цитата
Ігор Гончаренко написал:  сделайте это 1 раз с данными на исходном листе
Или обрабатывать не каждую ячейку отдельно, а записать все в массив и обработать там с последующей выгрузкой на лист
 
Код
Public Sub www()
    With ActiveSheet.UsedRange.Columns(1)
        .FormulaLocal = .FormulaLocal
    End With
End Sub
Я сам - дурнее всякого примера! ...
 
Цитата
denyron написал:
из за цикла скорость обработки увеличилась
Это же замечательно! ))
Страницы: 1
Читают тему (гостей: 1)