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

Вход

Регистрация

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

 

= Мир MS Excel/AdvancedFilter по нескольким условиям - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
AdvancedFilter по нескольким условиям
Niff-Nif Дата: Вторник, 12.02.2013, 18:38 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 40% ±

И снова доброго времени суток. Точно сегодня не мой день.
Итак, есть база, я пишу код, который должен скопировать результат фильтра в новое место через xlFilterCopy.
Операции идут с датами, мне нужно сортировать таблицу по двум критериям, например, >01.10.2012 и <01.02.2013.
Как записать условие. Вот мой код
[vba]
Код
With Workbooks("ччч.xlsm").Worksheets("111")
.Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear 'очищаем место
.Cells(intStartRow, intTempStartCol + 20).Formula = ">" & Workbooks("ччч.xlsm").Worksheets("222").Range("A4").Value 'тут первый критерий, НО не работает даже он один
.Columns("A:Z").AdvancedFilter xlFilterCopy, .Range(.Cells(intStartRow - 1, intTempStartCol), .Cells(intStartRow, intTempStartCol + 25)), .Cells(intTempStartRow, intTempStartCol), True 'собственно куда копируем
End With
[/vba]

Где ошибка??? С числами и текстом проблем нет!

[admin]Оформляйте коды тегами![/admin]
 
Ответить
СообщениеИ снова доброго времени суток. Точно сегодня не мой день.
Итак, есть база, я пишу код, который должен скопировать результат фильтра в новое место через xlFilterCopy.
Операции идут с датами, мне нужно сортировать таблицу по двум критериям, например, >01.10.2012 и <01.02.2013.
Как записать условие. Вот мой код
[vba]
Код
With Workbooks("ччч.xlsm").Worksheets("111")
.Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear 'очищаем место
.Cells(intStartRow, intTempStartCol + 20).Formula = ">" & Workbooks("ччч.xlsm").Worksheets("222").Range("A4").Value 'тут первый критерий, НО не работает даже он один
.Columns("A:Z").AdvancedFilter xlFilterCopy, .Range(.Cells(intStartRow - 1, intTempStartCol), .Cells(intStartRow, intTempStartCol + 25)), .Cells(intTempStartRow, intTempStartCol), True 'собственно куда копируем
End With
[/vba]

Где ошибка??? С числами и текстом проблем нет!

[admin]Оформляйте коды тегами![/admin]

Автор - Niff-Nif
Дата добавления - 12.02.2013 в 18:38
Gustav Дата: Вторник, 12.02.2013, 22:13 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Цитата (Niff-Nif)
Операции идут с датами, мне нужно сортировать таблицу по двум критериям, например, >01.10.2012 и <01.02.2013.
Как записать условие

Там танцы с бубном получаются вокруг американского формата даты. Попробуйте тут посмотреть:
http://www.planetaexcel.ru/forum....ID=1547


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Цитата (Niff-Nif)
Операции идут с датами, мне нужно сортировать таблицу по двум критериям, например, >01.10.2012 и <01.02.2013.
Как записать условие

Там танцы с бубном получаются вокруг американского формата даты. Попробуйте тут посмотреть:
http://www.planetaexcel.ru/forum....ID=1547

Автор - Gustav
Дата добавления - 12.02.2013 в 22:13
ikki Дата: Среда, 13.02.2013, 04:14 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
да вроде бы не надо бубна smile
wizard
К сообщению приложен файл: advanced_filter.xls (24.5 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеда вроде бы не надо бубна smile
wizard

Автор - ikki
Дата добавления - 13.02.2013 в 04:14
Niff-Nif Дата: Среда, 13.02.2013, 10:29 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 40% ±

тааак, есть над чем подумать...
А нельзя сделать условие в одной ячейки с оператором AND?
Например, >=01.01.2012 AND <=01.01.2013
или это уже анриал?
 
Ответить
Сообщениетааак, есть над чем подумать...
А нельзя сделать условие в одной ячейки с оператором AND?
Например, >=01.01.2012 AND <=01.01.2013
или это уже анриал?

Автор - Niff-Nif
Дата добавления - 13.02.2013 в 10:29
ikki Дата: Среда, 13.02.2013, 10:45 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Цитата (Niff-Nif)
А нельзя сделать

а кто вам запрещает? для моего файла (вашего как-то не видно):

[vba]
Код
Sub afd2()
   [d1].Formula = ""
   [d2].Formula = "=and(b2>=" & CLng(DateSerial(1950, 1, 1)) & ", b2<" & CLng(DateSerial(2000, 1, 1)) & ")"
   Range("A1:B10").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
     "D1:D2"), CopyToRange:=Range("G1:H1"), Unique:=False
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Цитата (Niff-Nif)
А нельзя сделать

а кто вам запрещает? для моего файла (вашего как-то не видно):

[vba]
Код
Sub afd2()
   [d1].Formula = ""
   [d2].Formula = "=and(b2>=" & CLng(DateSerial(1950, 1, 1)) & ", b2<" & CLng(DateSerial(2000, 1, 1)) & ")"
   Range("A1:B10").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
     "D1:D2"), CopyToRange:=Range("G1:H1"), Unique:=False
End Sub
[/vba]

Автор - ikki
Дата добавления - 13.02.2013 в 10:45
Gustav Дата: Среда, 13.02.2013, 11:22 | Сообщение № 6
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Niff-Nif, общий смысл в том, что, как учит ikki, при построении условия надо переходить от дат к целым числам. Собственно, и переходить-то особо не надо - они таковыми и являются в своей внутренней ипостаси. Иначе будете "под чужую песню и смеюсь, и плачу" - танцы под чужестранный американский бубен.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеNiff-Nif, общий смысл в том, что, как учит ikki, при построении условия надо переходить от дат к целым числам. Собственно, и переходить-то особо не надо - они таковыми и являются в своей внутренней ипостаси. Иначе будете "под чужую песню и смеюсь, и плачу" - танцы под чужестранный американский бубен.

Автор - Gustav
Дата добавления - 13.02.2013 в 11:22
Niff-Nif Дата: Среда, 13.02.2013, 11:39 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 40% ±

Спасибо Вам большое.
Будем колдовать.
Ну и плюсики Вам за помощь.
Хрю

P.S. не дает плюсануть, говорит через 12 часов sad


Сообщение отредактировал Niff-Nif - Среда, 13.02.2013, 11:45
 
Ответить
СообщениеСпасибо Вам большое.
Будем колдовать.
Ну и плюсики Вам за помощь.
Хрю

P.S. не дает плюсануть, говорит через 12 часов sad

Автор - Niff-Nif
Дата добавления - 13.02.2013 в 11:39
Niff-Nif Дата: Среда, 13.02.2013, 12:41 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 40% ±

Все равно что-то упорно делаю не так.
Вот прикрепил файл в котром, вроде, все сделал как учите, НО результат нулевой.
К сообщению приложен файл: 8707165.xlsm (98.0 Kb)
 
Ответить
СообщениеВсе равно что-то упорно делаю не так.
Вот прикрепил файл в котром, вроде, все сделал как учите, НО результат нулевой.

Автор - Niff-Nif
Дата добавления - 13.02.2013 в 12:41
ikki Дата: Среда, 13.02.2013, 12:47 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Цитата (Gustav)
как учит ikki

как-то... сарказмом пыхнуло...


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Цитата (Gustav)
как учит ikki

как-то... сарказмом пыхнуло...

Автор - ikki
Дата добавления - 13.02.2013 в 12:47
ikki Дата: Среда, 13.02.2013, 12:48 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Цитата (Niff-Nif)
8707165.xlsm

до глубокого вечера xlsm посмотреть не могу (религия такая).


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Цитата (Niff-Nif)
8707165.xlsm

до глубокого вечера xlsm посмотреть не могу (религия такая).

Автор - ikki
Дата добавления - 13.02.2013 в 12:48
Serge_007 Дата: Среда, 13.02.2013, 12:55 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
[offtop]
Цитата (ikki)
сарказмом пыхнуло...

Хорош пыхать, растаман ;)[/offtop]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение[offtop]
Цитата (ikki)
сарказмом пыхнуло...

Хорош пыхать, растаман ;)[/offtop]

Автор - Serge_007
Дата добавления - 13.02.2013 в 12:55
Niff-Nif Дата: Среда, 13.02.2013, 12:59 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 40% ±

Цитата (ikki)
до глубокого вечера xlsm посмотреть не могу (религия такая).

конвертнул в 2003
К сообщению приложен файл: 6273670.xls (64.0 Kb)
 
Ответить
Сообщение
Цитата (ikki)
до глубокого вечера xlsm посмотреть не могу (религия такая).

конвертнул в 2003

Автор - Niff-Nif
Дата добавления - 13.02.2013 в 12:59
Serge_007 Дата: Среда, 13.02.2013, 13:11 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (Niff-Nif)
конвертнул в 2003

Об этом есть в правилах


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (Niff-Nif)
конвертнул в 2003

Об этом есть в правилах

Автор - Serge_007
Дата добавления - 13.02.2013 в 13:11
ikki Дата: Среда, 13.02.2013, 13:28 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Цитата (Niff-Nif)
вроде, все сделал как учите

исправляя ваши ошибки, совершенные по методике "вроде" я, честно говоря, со счету сбился.

"найдите 10 отличий" сами.

у меня в 2002-м Excel вот такой код отработал правильно:

[vba]
Код
Private Sub CommandButton1_Click()
     If Not Worksheets("Выборка").Range("B4").Value = "" And Not Worksheets("Выборка").Range("C4").Value = "" Then
         With Worksheets("Список")
             .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear
             .Range("AF2").Formula = "=and(U2>=" & CLng(ThisWorkbook.Worksheets("Выборка").Range("B4").Value) _
                 & ", U2<=" & CLng(ThisWorkbook.Worksheets("Выборка").Range("c4").Value) & ")"
             .Range("A1:Z76").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
                 "AF1:AF2"), CopyToRange:=.Range("AN1:BM1"), Unique:=False
         End With
     End If
End Sub
[/vba]

пс. на будущее -"конвертируя" файл в xls, заодно уж конвертируйте и код, раз вы в нем указываете имя файла с расширением.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Цитата (Niff-Nif)
вроде, все сделал как учите

исправляя ваши ошибки, совершенные по методике "вроде" я, честно говоря, со счету сбился.

"найдите 10 отличий" сами.

у меня в 2002-м Excel вот такой код отработал правильно:

[vba]
Код
Private Sub CommandButton1_Click()
     If Not Worksheets("Выборка").Range("B4").Value = "" And Not Worksheets("Выборка").Range("C4").Value = "" Then
         With Worksheets("Список")
             .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear
             .Range("AF2").Formula = "=and(U2>=" & CLng(ThisWorkbook.Worksheets("Выборка").Range("B4").Value) _
                 & ", U2<=" & CLng(ThisWorkbook.Worksheets("Выборка").Range("c4").Value) & ")"
             .Range("A1:Z76").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
                 "AF1:AF2"), CopyToRange:=.Range("AN1:BM1"), Unique:=False
         End With
     End If
End Sub
[/vba]

пс. на будущее -"конвертируя" файл в xls, заодно уж конвертируйте и код, раз вы в нем указываете имя файла с расширением.

Автор - ikki
Дата добавления - 13.02.2013 в 13:28
Gustav Дата: Среда, 13.02.2013, 13:36 | Сообщение № 15
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
[offtop]
Цитата (ikki)
сарказмом пыхнуло

ну уж не знаю, я подразумевал пиетет smile


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение[offtop]
Цитата (ikki)
сарказмом пыхнуло

ну уж не знаю, я подразумевал пиетет smile

Автор - Gustav
Дата добавления - 13.02.2013 в 13:36
Niff-Nif Дата: Среда, 13.02.2013, 13:46 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 40% ±

Цитата (ikki)
пс. на будущее -"конвертируя" файл в xls, заодно уж конвертируйте и код, раз вы в нем указываете имя файла с расширением.

Согласен, понадеялся на то что там само по велению щучьему все произойдет...

Теперь о смешном, в 2003 у меня тоже все работает, а вот в 2007 тот же код не хочет работать, при том что критерий отображается так же как и в 2003.
Вот код 2007
[vba]
Код
Private Sub CommandButton1_Click()
      If Not Workbooks("Список.xlsm").Worksheets("Выборка").Range("B4").Value = "" And Not Workbooks("Список.xlsm").Worksheets("Выборка").Range("C4").Value = "" Then
          With Workbooks("Список.xlsm").Worksheets("Список")
              .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear
              .Range("AF2").Formula = "=and(U2>=" & CLng(Workbooks("Список.xlsm").Worksheets("Выборка").Range("B4").Value) _
                  & ", U2<=" & CLng(Workbooks("Список.xlsm").Worksheets("Выборка").Range("C4").Value) & ")"
              .Range("A:Z").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
                  "AF1:AF2"), CopyToRange:=.Range("AN1:BM1"), Unique:=False
          End With
      End If
End Sub
[/vba]
и в 2003 и в 2007 критерий отображается как
Код
=И(U2>=41192; U2<=41275)

но в 2003 работает, а в 2007 нет

P.S. Надеюсь теперь у Serg_007 нет притензий к оформлению. wacko
[admin]К оформлению - нет. А вот к соблюдениям правил - есть[/admin]
 
Ответить
Сообщение
Цитата (ikki)
пс. на будущее -"конвертируя" файл в xls, заодно уж конвертируйте и код, раз вы в нем указываете имя файла с расширением.

Согласен, понадеялся на то что там само по велению щучьему все произойдет...

Теперь о смешном, в 2003 у меня тоже все работает, а вот в 2007 тот же код не хочет работать, при том что критерий отображается так же как и в 2003.
Вот код 2007
[vba]
Код
Private Sub CommandButton1_Click()
      If Not Workbooks("Список.xlsm").Worksheets("Выборка").Range("B4").Value = "" And Not Workbooks("Список.xlsm").Worksheets("Выборка").Range("C4").Value = "" Then
          With Workbooks("Список.xlsm").Worksheets("Список")
              .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear
              .Range("AF2").Formula = "=and(U2>=" & CLng(Workbooks("Список.xlsm").Worksheets("Выборка").Range("B4").Value) _
                  & ", U2<=" & CLng(Workbooks("Список.xlsm").Worksheets("Выборка").Range("C4").Value) & ")"
              .Range("A:Z").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
                  "AF1:AF2"), CopyToRange:=.Range("AN1:BM1"), Unique:=False
          End With
      End If
End Sub
[/vba]
и в 2003 и в 2007 критерий отображается как
Код
=И(U2>=41192; U2<=41275)

но в 2003 работает, а в 2007 нет

P.S. Надеюсь теперь у Serg_007 нет притензий к оформлению. wacko
[admin]К оформлению - нет. А вот к соблюдениям правил - есть[/admin]

Автор - Niff-Nif
Дата добавления - 13.02.2013 в 13:46
ikki Дата: Среда, 13.02.2013, 14:00 | Сообщение № 17
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Niff-Nif, сравните коды, поищите отсутствующую точку в своём коде и добавьте её.
может, и заработает...
но гарантировать не могу - нет у меня подопытного 2007-го под рукой.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
СообщениеNiff-Nif, сравните коды, поищите отсутствующую точку в своём коде и добавьте её.
может, и заработает...
но гарантировать не могу - нет у меня подопытного 2007-го под рукой.

Автор - ikki
Дата добавления - 13.02.2013 в 14:00
Niff-Nif Дата: Среда, 13.02.2013, 14:08 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 40% ±

Цитата (ikki)
Niff-Nif, сравните коды, поищите отсутствующую точку в своём коде и добавьте её.
может, и заработает...
но гарантировать не могу - нет у меня подопытного 2007-го под рукой.

Ну вот ведь зараза... одна маленькая точка а убила половину дня badmood
Еще раз спасибо.
Как только смогу плюсовать, ткну в плюс.
 
Ответить
Сообщение
Цитата (ikki)
Niff-Nif, сравните коды, поищите отсутствующую точку в своём коде и добавьте её.
может, и заработает...
но гарантировать не могу - нет у меня подопытного 2007-го под рукой.

Ну вот ведь зараза... одна маленькая точка а убила половину дня badmood
Еще раз спасибо.
Как только смогу плюсовать, ткну в плюс.

Автор - Niff-Nif
Дата добавления - 13.02.2013 в 14:08
  • Страница 1 из 1
  • 1
Поиск:

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