Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Замена точки на точку в диапазоне дат - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замена точки на точку в диапазоне дат (Макросы/Sub)
Замена точки на точку в диапазоне дат
Cere6ellum Дата: Понедельник, 11.11.2019, 11:08 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здрасьте всем.
Не раз сталкиваюсь с проблемой фильтрования дат.

Имеем некий столбец с датами.
Пусть будет "B"
Даты в нём указаны (вернее данные были вставлены) в таком виде - dd.mm.yyyy

При попытке отфильтровать (вручную), Excel видит все значения как числа.
И соответственно не группирует по году/месяцу в фильтре.

Вручную обычно решаю так.
Ctrl+H и заменяю точку на точку.
Фильтр + группировка начинают работать.

Но средствами VBA замена не работает.
И не могу понять почему.

Подскажите пжл, как правильно сделать.

[vba]
Код
'Formatting to date via replacement
        .Columns("B:B").Select

        Selection.Replace What:=".", _
        Replacement:=".", _
        LookAt:=xlPart, _
        SearchOrder:=xlByRows, _
        MatchCase:=False, _
        SearchFormat:=False, _
        ReplaceFormat:=False
[/vba]
 
Ответить
СообщениеЗдрасьте всем.
Не раз сталкиваюсь с проблемой фильтрования дат.

Имеем некий столбец с датами.
Пусть будет "B"
Даты в нём указаны (вернее данные были вставлены) в таком виде - dd.mm.yyyy

При попытке отфильтровать (вручную), Excel видит все значения как числа.
И соответственно не группирует по году/месяцу в фильтре.

Вручную обычно решаю так.
Ctrl+H и заменяю точку на точку.
Фильтр + группировка начинают работать.

Но средствами VBA замена не работает.
И не могу понять почему.

Подскажите пжл, как правильно сделать.

[vba]
Код
'Formatting to date via replacement
        .Columns("B:B").Select

        Selection.Replace What:=".", _
        Replacement:=".", _
        LookAt:=xlPart, _
        SearchOrder:=xlByRows, _
        MatchCase:=False, _
        SearchFormat:=False, _
        ReplaceFormat:=False
[/vba]

Автор - Cere6ellum
Дата добавления - 11.11.2019 в 11:08
Cere6ellum Дата: Понедельник, 11.11.2019, 12:37 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Пока работает только решение в цикле.

[vba]
Код

.Cells(i, 2).Value = CDate(.Cells(i, 2).Value)
[/vba]

Как реализовать без цикла не знаю.
 
Ответить
СообщениеПока работает только решение в цикле.

[vba]
Код

.Cells(i, 2).Value = CDate(.Cells(i, 2).Value)
[/vba]

Как реализовать без цикла не знаю.

Автор - Cere6ellum
Дата добавления - 11.11.2019 в 12:37
Pelena Дата: Понедельник, 11.11.2019, 14:53 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 14887
Репутация: 3251 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Cere6ellum, приложите кусочек Ваших данных, возможно, есть и другие способы перевести дату в нормальный формат


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеCere6ellum, приложите кусочек Ваших данных, возможно, есть и другие способы перевести дату в нормальный формат

Автор - Pelena
Дата добавления - 11.11.2019 в 14:53
Cere6ellum Дата: Вторник, 12.11.2019, 07:06 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
приложите кусочек Ваших данных

Приложил.
Спасибо заранее.
К сообщению приложен файл: Test.xlsm(20.6 Kb)
 
Ответить
Сообщение
приложите кусочек Ваших данных

Приложил.
Спасибо заранее.

Автор - Cere6ellum
Дата добавления - 12.11.2019 в 07:06
Pelena Дата: Вторник, 12.11.2019, 07:25 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 14887
Репутация: 3251 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Попробуйте через текст по столбцам
К сообщению приложен файл: Test-1-.xlsm(24.2 Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеПопробуйте через текст по столбцам

Автор - Pelena
Дата добавления - 12.11.2019 в 07:25
Cere6ellum Дата: Вторник, 12.11.2019, 12:45 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Попробуйте через текст по столбцам

Увы не работает.
Читал я про текст по столбцам.
Не особо понял как реализовать средствами vba.
Так же пробовал через запись действий макросом.
Код не работает, а вручную, - да, получается отформатировать.

Но, даже, если заработает средствами vba, считаю неизвестно как себя может повести в случае, если помимо дат есть и другие колонки с данными.

Так что, кроме перебора пока не нашёл решений.
Но перебор - это уж слишком "в лоб".

Странно, что для такой часто-встречающейся проблемы не существует решения.
 
Ответить
Сообщение
Попробуйте через текст по столбцам

Увы не работает.
Читал я про текст по столбцам.
Не особо понял как реализовать средствами vba.
Так же пробовал через запись действий макросом.
Код не работает, а вручную, - да, получается отформатировать.

Но, даже, если заработает средствами vba, считаю неизвестно как себя может повести в случае, если помимо дат есть и другие колонки с данными.

Так что, кроме перебора пока не нашёл решений.
Но перебор - это уж слишком "в лоб".

Странно, что для такой часто-встречающейся проблемы не существует решения.

Автор - Cere6ellum
Дата добавления - 12.11.2019 в 12:45
Kuzmich Дата: Вторник, 12.11.2019, 14:42 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 432
Репутация: 88 ±
Замечаний: 0% ±

Excel 2003
А так попробуйте
[vba]
Код
Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).NumberFormat = "dd/mm/yyyy"
[/vba]
 
Ответить
СообщениеА так попробуйте
[vba]
Код
Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).NumberFormat = "dd/mm/yyyy"
[/vba]

Автор - Kuzmich
Дата добавления - 12.11.2019 в 14:42
K-SerJC Дата: Среда, 13.11.2019, 09:45 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 479
Репутация: 84 ±
Замечаний: 0% ±

Excel 2013
Странно, что для такой часто-встречающейся проблемы не существует решения.

а так?
[vba]
Код

Sub tyc()
With Range("A:A")
.NumberFormat = "dd/mm/yyyy"
.FormulaLocal = .FormulaLocal
End With
End Sub
[/vba]
К сообщению приложен файл: Cere6ellum-2.xlsm(24.1 Kb)


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Среда, 13.11.2019, 10:12
 
Ответить
Сообщение
Странно, что для такой часто-встречающейся проблемы не существует решения.

а так?
[vba]
Код

Sub tyc()
With Range("A:A")
.NumberFormat = "dd/mm/yyyy"
.FormulaLocal = .FormulaLocal
End With
End Sub
[/vba]

Автор - K-SerJC
Дата добавления - 13.11.2019 в 09:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замена точки на точку в диапазоне дат (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!