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

Вход

Регистрация

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

 

= Мир MS Excel/Фильтр: выбор дат за период - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Фильтр: выбор дат за период
A_3485 Дата: Четверг, 31.08.2017, 15:05 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
Уважаемые форумчане, добрый день!
Решил с помощью макроса поставить фильтр за период. Формат столбца (текстовый или числовой или общий). Сначала выполнил запись декодера и все получилось (Макрос1). Но когда начал писать программно (Макрос2, Макрос4) ничего не получается. Что пошло не так не понимаю. Сначала пробовал подставить диапазон выбранных значений, затем записать в виде массива.
К сообщению приложен файл: 3796512.xls (95.5 Kb)
 
Ответить
СообщениеУважаемые форумчане, добрый день!
Решил с помощью макроса поставить фильтр за период. Формат столбца (текстовый или числовой или общий). Сначала выполнил запись декодера и все получилось (Макрос1). Но когда начал писать программно (Макрос2, Макрос4) ничего не получается. Что пошло не так не понимаю. Сначала пробовал подставить диапазон выбранных значений, затем записать в виде массива.

Автор - A_3485
Дата добавления - 31.08.2017 в 15:05
sboy Дата: Четверг, 31.08.2017, 15:30 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Формат столбца (текстовый или числовой или общий)

Если Вы собираетесь фильтровать по дате, то и формат должен быть не текст!!!
Ваш второй макрос, будет выглядеть так
[vba]
Код
Sub Макрос2()
Dim result()
ReDim result(1 To Day(Date))
For i = 1 To Day(Date)
    result(i) = DateSerial(Year(Date), Month(Date), i)
Next i
ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:= _
result, Operator:=xlFilterValues
End Sub
[/vba]
а третий вот так (см. ниже вариант от Boroda)
[vba]
Код
Sub Макрос4()
начало = CDate("01.08.2017")
конец = Date
    ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:=">=" _
    & начало, Operator:=xlAnd, Criteria2:="<=" & конец
End Sub
[/vba]
К сообщению приложен файл: 2834714.xls (60.5 Kb)


Яндекс: 410016850021169

Сообщение отредактировал sboy - Четверг, 31.08.2017, 16:16
 
Ответить
СообщениеДобрый день.
Формат столбца (текстовый или числовой или общий)

Если Вы собираетесь фильтровать по дате, то и формат должен быть не текст!!!
Ваш второй макрос, будет выглядеть так
[vba]
Код
Sub Макрос2()
Dim result()
ReDim result(1 To Day(Date))
For i = 1 To Day(Date)
    result(i) = DateSerial(Year(Date), Month(Date), i)
Next i
ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:= _
result, Operator:=xlFilterValues
End Sub
[/vba]
а третий вот так (см. ниже вариант от Boroda)
[vba]
Код
Sub Макрос4()
начало = CDate("01.08.2017")
конец = Date
    ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:=">=" _
    & начало, Operator:=xlAnd, Criteria2:="<=" & конец
End Sub
[/vba]

Автор - sboy
Дата добавления - 31.08.2017 в 15:30
_Boroda_ Дата: Четверг, 31.08.2017, 16:00 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
sboy, у Вас это работает?
Например, последний макрос?
У меня такой вариант
[vba]
Код
Sub Макрос4()
начало = Format(CDate("01.08.2017"), "#")
конец = Format(Date, "#")
    ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:=">=" _
    & начало, Operator:=xlAnd, Criteria2:="<=" & конец
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщениеsboy, у Вас это работает?
Например, последний макрос?
У меня такой вариант
[vba]
Код
Sub Макрос4()
начало = Format(CDate("01.08.2017"), "#")
конец = Format(Date, "#")
    ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:=">=" _
    & начало, Operator:=xlAnd, Criteria2:="<=" & конец
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 31.08.2017 в 16:00
sboy Дата: Четверг, 31.08.2017, 16:14 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Например, последний макрос?

Согласен, поторопился...


Яндекс: 410016850021169
 
Ответить
Сообщение
Например, последний макрос?

Согласен, поторопился...

Автор - sboy
Дата добавления - 31.08.2017 в 16:14
A_3485 Дата: Четверг, 31.08.2017, 16:34 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
По первому варианту у меня почему-то не получается. По второму выдает ошибку "Type mismatch "
[vba]
Код
начало = CDate("01.08.2017")
[/vba]
 
Ответить
СообщениеПо первому варианту у меня почему-то не получается. По второму выдает ошибку "Type mismatch "
[vba]
Код
начало = CDate("01.08.2017")
[/vba]

Автор - A_3485
Дата добавления - 31.08.2017 в 16:34
sboy Дата: Четверг, 31.08.2017, 16:51 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
По первому варианту у меня почему-то не получается

Если Вы собираетесь фильтровать по дате, то и формат должен быть не текст!!!


Яндекс: 410016850021169
 
Ответить
Сообщение
По первому варианту у меня почему-то не получается

Если Вы собираетесь фильтровать по дате, то и формат должен быть не текст!!!

Автор - sboy
Дата добавления - 31.08.2017 в 16:51
A_3485 Дата: Четверг, 31.08.2017, 16:56 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
Если вместо "." ставлю "/" код проходит. Получается, что дело в региональной настройке, которая определяет формат даты. Как его обходить программно, например если у меня в компе региональная настройка и символ "/", а у второго работника ".".
 
Ответить
СообщениеЕсли вместо "." ставлю "/" код проходит. Получается, что дело в региональной настройке, которая определяет формат даты. Как его обходить программно, например если у меня в компе региональная настройка и символ "/", а у второго работника ".".

Автор - A_3485
Дата добавления - 31.08.2017 в 16:56
_Boroda_ Дата: Четверг, 31.08.2017, 17:02 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Вот так попробуйте
[vba]
Код
Sub Макрос2()
Dim result()
ReDim result(1 To Day(Date) * 2)

For i = 1 To Day(Date)
    result(i * 2 - 1) = 2
    result(i * 2) = DateSerial(Year(Date), Month(Date), i)
Next i
ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:= _
result, Operator:=xlFilterValues

End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВот так попробуйте
[vba]
Код
Sub Макрос2()
Dim result()
ReDim result(1 To Day(Date) * 2)

For i = 1 To Day(Date)
    result(i * 2 - 1) = 2
    result(i * 2) = DateSerial(Year(Date), Month(Date), i)
Next i
ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:= _
result, Operator:=xlFilterValues

End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 31.08.2017 в 17:02
A_3485 Дата: Четверг, 31.08.2017, 17:15 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
так тоже не работает. Получилось при условии: формат ячеек ДАТА, преобразованная переменная "начало" через "#". Остается вопрос с региональными настройками. Может ввести промежуточную переменную, которая будет проверять какой символ региональной настройки выбран "." или "/". Затем в зависимости от выбранного символа подставлять его в:
[vba]
Код
начало = Format(CDate("01.08.2017"), "#")
[/vba]
 
Ответить
Сообщениетак тоже не работает. Получилось при условии: формат ячеек ДАТА, преобразованная переменная "начало" через "#". Остается вопрос с региональными настройками. Может ввести промежуточную переменную, которая будет проверять какой символ региональной настройки выбран "." или "/". Затем в зависимости от выбранного символа подставлять его в:
[vba]
Код
начало = Format(CDate("01.08.2017"), "#")
[/vba]

Автор - A_3485
Дата добавления - 31.08.2017 в 17:15
_Boroda_ Дата: Четверг, 31.08.2017, 17:21 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
так тоже не работает

А у меня работает :p
Покажите в файле как у Вас "не работает"
И не морочьтесь с региональными настройками. Для фильтра они неважны - там всегда формат MM/DD/YYYY


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
так тоже не работает

А у меня работает :p
Покажите в файле как у Вас "не работает"
И не морочьтесь с региональными настройками. Для фильтра они неважны - там всегда формат MM/DD/YYYY

Автор - _Boroda_
Дата добавления - 31.08.2017 в 17:21
A_3485 Дата: Четверг, 31.08.2017, 17:33 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
Не получилось :(
К сообщению приложен файл: 8795038.xls (91.0 Kb)
 
Ответить
СообщениеНе получилось :(

Автор - A_3485
Дата добавления - 31.08.2017 в 17:33
_Boroda_ Дата: Четверг, 31.08.2017, 17:35 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
А у Вас Excel какой? заполните пункт "Версия" в своем профиле на форуме

Ваш файл у меня прекрасно отработал. Excel 2013


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА у Вас Excel какой? заполните пункт "Версия" в своем профиле на форуме

Ваш файл у меня прекрасно отработал. Excel 2013

Автор - _Boroda_
Дата добавления - 31.08.2017 в 17:35
A_3485 Дата: Пятница, 01.09.2017, 15:05 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
А у Вас Excel какой?

2007
 
Ответить
Сообщение
А у Вас Excel какой?

2007

Автор - A_3485
Дата добавления - 01.09.2017 в 15:05
nilem Дата: Пятница, 01.09.2017, 18:18 | Сообщение № 14
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
может как-то так:
[vba]
Код
Sub tttt()
Dim dt1$, dt2$
' выбираем даты с 01.08.2017 по 01.09.2017
dt1 = ">=" & CLng(#8/1/2017#): dt2 = "<=" & CLng(#9/1/2017#)
With [a3].CurrentRegion
    .AutoFilter Field:=3, Criteria1:=dt1, Operator:=xlAnd, Criteria2:=dt2
End With
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеможет как-то так:
[vba]
Код
Sub tttt()
Dim dt1$, dt2$
' выбираем даты с 01.08.2017 по 01.09.2017
dt1 = ">=" & CLng(#8/1/2017#): dt2 = "<=" & CLng(#9/1/2017#)
With [a3].CurrentRegion
    .AutoFilter Field:=3, Criteria1:=dt1, Operator:=xlAnd, Criteria2:=dt2
End With
End Sub
[/vba]

Автор - nilem
Дата добавления - 01.09.2017 в 18:18
_Boroda_ Дата: Пятница, 01.09.2017, 21:03 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
С конкретными датами вопросов нет, а вот с произвольными...
Вот так заработало для 2007 Excel
[vba]
Код
Sub Макрос2()
Dim result()
ReDim result(1 To Day(Date) * 2)
For i = 1 To Day(Date)
    result(i * 2 - 1) = 2
    result(i * 2) = Format(DateSerial(Year(Date), Month(Date), i), "M\/D\/YYYY")
Next i
ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:= _
result, Operator:=xlFilterValues
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеС конкретными датами вопросов нет, а вот с произвольными...
Вот так заработало для 2007 Excel
[vba]
Код
Sub Макрос2()
Dim result()
ReDim result(1 To Day(Date) * 2)
For i = 1 To Day(Date)
    result(i * 2 - 1) = 2
    result(i * 2) = Format(DateSerial(Year(Date), Month(Date), i), "M\/D\/YYYY")
Next i
ActiveSheet.Range("$A$3:$M$60000").AutoFilter Field:=3, Criteria1:= _
result, Operator:=xlFilterValues
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 01.09.2017 в 21:03
  • Страница 1 из 1
  • 1
Поиск:

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