Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69

Автофильтр ссылка на ячейку в диапазоне между датами

01.08.2013, 23:52. Показов 7392. Ответов 87
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, прошу помощи в следующем вопросе, как вместо дат в данном случае заставить работать
в связи с данными в ячейкахю
Private Sub CommandButton2_Click()
ActiveSheet.Range("$B$1:$F$35940").AutoF ilter Field:=1, Criteria1:= _
">=02.01.2013", Operator:=xlAnd, Criteria2:="<=06.01.2013"
End Sub
Заранее благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.08.2013, 23:52
Ответы с готовыми решениями:

Запрос count в диапазоне между датами
Создаю запрос с подсчетом строк по значению. Необходимо чтобы выборка значений происходила в определенном диапазоне дат. Запрос выглядит...

Автофильтр не работает при поиске в промежутке между десятичными дробями
Добрый день! Подскажите, пожалуйста, решение следующей проблем. Столбец данных подвергается фильтрации следующим образом: Dim MErr, N...

макрос который закрашивает ячейку с датами по условию
Здравствуйте! Помогите с написанием макроса, у меня в столбце B:B проставляются даты и мне нужно чтобы макрос определял если дата уже...

87
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
06.08.2013, 22:03  [ТС]
Студворк — интернет-сервис помощи студентам
Добрый день!
Даже и не знаю почему тишина, но я очень даже благодарен, кое чему у Вас научился, я уже начал тренироваться на комбобоксах с dictionary по вашему совету, правда, что то я запутался, как сослаться на другой лист)) Хотя я так понимаю with мне в помощь)))

Добавлено через 1 минуту
И могу сказать, что через dictionary, это действительно сила)
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
07.08.2013, 09:53
...тренироваться на комбобоксах
Как бы это Вам обяснить... Вот образно. Вам поставили цель: за месяц купить машину, получить права, куда-то поехать и что-то сделать. Вместо четких шагов, Вы пол месяца ходите по торговым местам и покупаете "для будущей машины" всякую безвкусицу - мигающие лампочки, наклеечки, висюльки, бирюльки....
Напихаете в проект всяких бантиков-фантиков, месяц ними полюбуетесь как это все красиво и эфектно, а еще через месяц сами начнете ругаться и швыряться. Чем больше кнопочек - больше вероятность механической ошибки, чем больше нужно делать самому выбор - больше вероятность логической ошибки. Лучше научить машину, что б она сама думала. За нее деньги заплатили - вот пусть и работает.
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
07.08.2013, 10:21  [ТС]
Нет, что вы я просто оттачиваю так сказать для себя не для глобального задания, я вот об этой штуке говорил)
Visual Basic
1
2
3
4
5
6
7
8
Dim a, i&
  With Sheets("Áàçà")
    a = [c1].CurrentRegion.Columns(1)
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(a): .Item(a(i, 1)) = "": Next
        ComboBox1.List = .keys
    End With
    End With
но оно у меня не работает так как нужно))) Для этого я поэлементно на простеньких задачка отрабатываю пока что)
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
07.08.2013, 10:34
Разберитесь с Dictionary! Заработает. В той ссылке - куча примеров. Еще раз. Плохого ничего нет, если Ваш уровень англ. не позволяет правильно понять профильный текст. Поэтому говорю - хотите, скину украинским (если буду переводить на русский с моим уровнем его знания - то уже никто ничего... ). А в Киеве Вам точно могут помочь конкретно.
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
07.08.2013, 11:07  [ТС]
Спасибо, английского примера, я думаю достаточно будет))))) Разбираюсь потхоньку вот)))
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
07.08.2013, 11:35
Да, мне нужно было где-то два дня. Аж дым от меня шел!

Добавлено через 3 минуты
А вобще - у меня есть очень дальний родственник - судья в США. Как-то тоже мне скинул тех.док, что б ему разьяснить. Всякое бывает...

Добавлено через 14 минут
А вот Вам графики. Теперь попалось... случайно.
http://www.myonlinetraininghub... ard-course
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
07.08.2013, 22:11  [ТС]
ОО, спасибо Вам, буду знакомиться.

Добавлено через 1 минуту
У нас тут получилась целая статья по написанию отчетов и фильтрации данных)))

Добавлено через 8 часов 32 минуты
Прошу прощения, не могли бы вы подсказать, почему данный фильтр, то фильтрует то не фильтрует
Visual Basic
1
2
3
4
Range("$B$2:$E$35766").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("H2:H4"), Unique:=False
        Sheets("Ëèñò2").Range("A:N").ClearContents 'Clear
         ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Copy Worksheets("Ëèñò2").Cells(1)
при выборе разных значениях диапазона, а то я что то не могу понять

Добавлено через 20 минут
В том смлысле, если я например выбираю 1, 100, 150 advanced не фильтрует
0
 Аватар для SlavaRus
1124 / 237 / 37
Регистрация: 15.03.2010
Сообщений: 729
07.08.2013, 22:27
Скорее всего лист неактивный, поэтому и не фильтрует.
Попробуй перед range... явно указать лист Worksheets("namesheet").range...
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
07.08.2013, 23:50  [ТС]
Эмм, да, Вы правы, оказалось дело, в том, что он не может определить лист)) спасибо

Добавлено через 1 час 13 минут
Игорь, а насколько реально заставить фильтровать по переменным выбраным в листбоксе, что то я не могу, даже примерно придумать направление в котором можно было бы такое решить?
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
07.08.2013, 23:57
Не имеет значения, откуда берете. Главное - правильно передать дальше (если Вы берете число и Listbox - это еще совсем не значит, что это число. Скорее - текст)
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
08.08.2013, 00:12  [ТС]
нет нет именно текст, я загружаю уникальные значения
Visual Basic
1
2
3
4
5
6
7
8
Private Sub UserForm_Initialize()
Dim a, i&
    a = [c1].CurrentRegion.Columns(2)
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(a): .Item(a(i, 1)) = "": Next
        ListBox1.List = .Keys
    End With
End Sub
А вот как теперь воспользоваться функцией мультиселект и и отфильтровать текст именно его, я запутался через advanced получается в ячейках, а вот как объединить выбор в листбоксе и критерии фильтра? не могли бы вы подсказать? Именно фильтрую текст, вот только не могу придумать как выбраную группу значений листбокса передать значениями для фильтра для фильтрации текста(((

Добавлено через 6 минут
Просто не могу найти нигде, вот видите, кстати, потихоньку с dictionary кое чего выходит, а как вот теберь значениями из листбокса отфильтровать идеи закончились((( прошу прощения за наглость, так сказать, но мозги уже поплыли)
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
08.08.2013, 00:17
С этим нужно играться и видеть перед собой. А еще поищите в Google, только разговаривайти с ним английским.
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
08.08.2013, 00:24  [ТС]
Вот мои попытки и эксперементы над той же таблицей, но это не помогает, если вам не сложно не могли бы вы глянуть еще разок, может я где то допускаю ошибку?
Вложения
Тип файла: rar Фильтрацияфорум.rar (3.06 Мб, 1 просмотров)
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
08.08.2013, 11:10  [ТС]
Нашел вот подобие кода с мультиселектом
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Dim MySelection() As String
Dim NCrit As Long
Dim HideRange As Range
Dim HideRows As Range
Dim TheCell As Range
    
 
    '1 - Reading the multiple entries in the listbox
    
    ReDim MySelection(1 To Me.ListBox_MultiSelect.ListCount)
    NCrit = 0
    For i = 1 To Me.ListBox_MultiSelect.ListCount
        If Me.ListBox_MultiSelect.Selected(i - 1) = True Then
            MySelection(i) = Me.ListBox_MultiSelect.List(i - 1, 0)
            NCrit = NCrit + 1
        End If
    Next i
    Redim Preserve MySelection(1 to NCrit)
    
    '2 - Filtering the data to show only what was selected
    
    Sheets("MySheet").Select
    Cells.EntireRow.Hidden = False
    Sheets("MySheet").AutoFilterMode = False
    Rows(1).AutoFilter
    
    Set HideRange = Nothing
    For i = 1 To NCrit
        Sheets("MySheet").UsedRange.AutoFilter Field:=3, Criteria1:="<>" & MySelection(i)
        If HideRange Is Nothing Then
            Set HideRange = Sheets("MySheet").AutoFilter.Range.SpecialCells(xlCellTypeVisible)
        Else
            Set HideRange = Intersect(HideRange, Sheets("MySheet").AutoFilter.Range.SpecialCells(xlCellTypeVisible))
        End If
    Next i
    
    Sheets("MySheet").AutoFilterMode = False
    
    '3 - Hiding the rows that were not selected
    
    Set HideRows = Nothing
    For Each TheCell In HideRange
        If Rows(TheCell.Row).Hidden = False Then
            If HideRows Is Nothing Then
                Set HideRows = Rows(TheCell.Row)
            Else
                Set HideRows = Union(HideRows, Rows(TheCell.Row))
            End If
        End If
    Next TheCell
 
    HideRows.EntireRow.Hidden = True
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
08.08.2013, 12:20
Если не ошибаюсь, multiselect для ListBox имеет три константы. 0 - выбор одного, 1 - выбор нескольких щелчками (нельзя выбрать несколько от а до ~ d сразу как рамкой), 2 - выбор, как на листе ( + Shift, + Ctrl). Установить можно, в т.ч., вручную через свойства.
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
08.08.2013, 14:26  [ТС]
Можно и програмно, только прописать вместо не 1 а текстом или через свойства, а Ваше мнение, можно этот код приспособить?
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
08.08.2013, 14:49
Технически - почти все возможно. Даже обогревательный котел установить верх ногами. Только какой будет производительность?
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
08.08.2013, 15:39  [ТС]
Судя по тесту на небольшом массиве, очень невысокая, подгружает процессор
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
08.08.2013, 15:43  [ТС]
Креплю пример с листбоксом, простенький, как раз отображает действие advanced и multiselect
Вложения
Тип файла: xls Фильтр с помощью AdvFilter.xls (46.0 Кб, 4 просмотров)
0
1 / 1 / 0
Регистрация: 20.05.2013
Сообщений: 69
08.08.2013, 17:07  [ТС]
Когда у Вас будет минутка, не могли бы Вы глянуть? что то я повис с этим окончательно

Добавлено через 15 минут
Вот, выкладываю два фильтра один фильтрует с листа, второй фильтрует из листбокса в режиме multiselect, скорость невысокая, но работает, уже что то)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    Dim dict As Object, i As Long
    
    Set dict = CreateObject("Scripting.Dictionary")
    
    'This autofilters based on selections made in LB1
    With ListBox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                dict(.List(i)) = Empty
            Else
                ActiveSheet.Range("$B:$F").AutoFilter Field:=2
            End If
        Next i
    End With
   
    If dict.Count = 0 Then Exit Sub
    
    With Sheets("Áàçà")
        .Range("B1").AutoFilter
        .Range("$B:$F").AutoFilter Field:=2, Criteria1:=dict.keys, Operator:=xlFilterValues
    End With
    '------
    'This loads listbox2 based on the filters made in LB1
   ' Dim rngSource As Range, rCell As Range
   ' Set rngSource = Sheets("Áàçà").Range("N1:N4").SpecialCells(xlVisible) '<--Adjust the range
   ' With dict
     '   .RemoveAll
    
     '   For Each rCell In rngSource
         '   dict(rCell.Value) = Empty
      '  Next
        
      '  If .Count Then Me.ListBox1.List = Application.Transpose(.keys)
  '  End With
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2013, 17:07
Помогаю со студенческими работами здесь

Ссылка на ячейку
Добрый день, можете подсказать, в ячейке есть такая формула например в ячейке А2...

Закрепить ссылку на ячейку в диапазоне
Доброго дня! Господа, возник вопрос, своим умом додумать не получилось. Есть книга, достаточно большая (пара тысяч строк на пару десятков...

Ссылка на ячейку в запросе
Ребята, подскажите пожалуйста, как реализовать следующее: есть запрос с полями: Столбец1, Столбец2, Столбец3. Данные из Столбец3...

Ссылка на другую ячейку
Доброе время суток! Подскажите пожалуйста, как в MySQL реализовать следующее: есть две схемы с таблицами, например sheme1.table1 и...

Как найти последнюю ячейку в диапазоне?
Требуется найти последнюю непустую ячейку в диапазоне. LastRow = Range('F5:F3999').SpecialCells(xlCellTypeLastCell).Row возвращает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru