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

Вход

Регистрация

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

 

= Мир MS Excel/Выбор в автофильтре значений по типу "все кроме..." - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Выбор в автофильтре значений по типу "все кроме..."
WeRiX Дата: Воскресенье, 20.07.2014, 19:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 4 ±
Замечаний: 0% ±

Excel 2013
Подскажите как это сделать)
!нужно выбрать все значения кроме "пусто"
Из того что сумел нарыть построил это, но оно не работает-->
[vba]
Код
Private Sub CommandButton1_Click()
Dim w1, w3 As Worksheet
Dim vItem, avArr, li As Long
Set w1 = Workbooks("1.xlsm").Worksheets(1)
Set w3 = Workbooks("1.xlsm").Worksheets(2)
iLastRow = w1.Cells(Rows.Count, 1).End(xlUp).Row
If w1.FilterMode Then w1.ShowAllData
Set r = Range(w1.Cells(3, 9), w1.Cells(iLastRow, 9))
     ReDim avArr(1 To iLastRow, 1 To 1)
     With New Collection
        On Error Resume Next
         For Each vItem In r
         If vItem <> "" Then
             .Add vItem, CStr(vItem)
             If Err = 0 Then
                 li = li + 1: avArr(li, 1) = vItem
             Else: Err.Clear
             End If
             End If
         Next
     End With
' If li Then w3.Cells(1, 1).Resize(li).Value = avArr
If li Then w1.Cells(2, 1).AutoFilter Field:=9, Criteria1:=avArr(), Operator:=xlFilterValues
End Sub
[/vba]
 
Ответить
СообщениеПодскажите как это сделать)
!нужно выбрать все значения кроме "пусто"
Из того что сумел нарыть построил это, но оно не работает-->
[vba]
Код
Private Sub CommandButton1_Click()
Dim w1, w3 As Worksheet
Dim vItem, avArr, li As Long
Set w1 = Workbooks("1.xlsm").Worksheets(1)
Set w3 = Workbooks("1.xlsm").Worksheets(2)
iLastRow = w1.Cells(Rows.Count, 1).End(xlUp).Row
If w1.FilterMode Then w1.ShowAllData
Set r = Range(w1.Cells(3, 9), w1.Cells(iLastRow, 9))
     ReDim avArr(1 To iLastRow, 1 To 1)
     With New Collection
        On Error Resume Next
         For Each vItem In r
         If vItem <> "" Then
             .Add vItem, CStr(vItem)
             If Err = 0 Then
                 li = li + 1: avArr(li, 1) = vItem
             Else: Err.Clear
             End If
             End If
         Next
     End With
' If li Then w3.Cells(1, 1).Resize(li).Value = avArr
If li Then w1.Cells(2, 1).AutoFilter Field:=9, Criteria1:=avArr(), Operator:=xlFilterValues
End Sub
[/vba]

Автор - WeRiX
Дата добавления - 20.07.2014 в 19:55
nilem Дата: Воскресенье, 20.07.2014, 20:18 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
попробуйте как-то так:
[vba]
Код
Sub example_5()
Dim f
With Range("A1", Cells(Rows.Count, 1).End(xlUp))
     'одномерный массив без пустых значений из столбца
     f = Split(Replace(Join(Filter(Split("~" & Join(Application.Transpose(.Value), "~|~") & "~", "|"), _
                    "~~", False), "|"), "~", ""), "|")
     .AutoFilter 1, f, 7
End With
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениепопробуйте как-то так:
[vba]
Код
Sub example_5()
Dim f
With Range("A1", Cells(Rows.Count, 1).End(xlUp))
     'одномерный массив без пустых значений из столбца
     f = Split(Replace(Join(Filter(Split("~" & Join(Application.Transpose(.Value), "~|~") & "~", "|"), _
                    "~~", False), "|"), "~", ""), "|")
     .AutoFilter 1, f, 7
End With
End Sub
[/vba]

Автор - nilem
Дата добавления - 20.07.2014 в 20:18
WeRiX Дата: Воскресенье, 20.07.2014, 20:46 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 4 ±
Замечаний: 0% ±

Excel 2013
nilem, Огромное спасибо работает прекрасно и не понятно как (:
однако, секунду назад методом научного тыка решил проблему так
[vba]
Код
w1.Cells(2, 1).AutoFilter field:=9, Criteria1:=("<>")
[/vba]
Но чуя большие возможности твоего решения (:, подскажи плз-->
Как фильтровать все совпадения введенные через textbox, как если бы я все делал вручную через автофильтр.
Думал, что можно все провернуть через массив значений, но такой фокус не работает, а твой метод вообще не понятен мне)
 
Ответить
Сообщениеnilem, Огромное спасибо работает прекрасно и не понятно как (:
однако, секунду назад методом научного тыка решил проблему так
[vba]
Код
w1.Cells(2, 1).AutoFilter field:=9, Criteria1:=("<>")
[/vba]
Но чуя большие возможности твоего решения (:, подскажи плз-->
Как фильтровать все совпадения введенные через textbox, как если бы я все делал вручную через автофильтр.
Думал, что можно все провернуть через массив значений, но такой фокус не работает, а твой метод вообще не понятен мне)

Автор - WeRiX
Дата добавления - 20.07.2014 в 20:46
nilem Дата: Воскресенье, 20.07.2014, 21:03 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Criteria1:="<>" так, конечно, проще и правильнее (это я намудрил чего-то :))
а с текстбоксом - как-то так что ли:
[vba]
Код
With ActiveSheet
     .Range("$A$1:$A$21").AutoFilter Field:=1, Criteria1:=.TextBox1.Value
End With
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеCriteria1:="<>" так, конечно, проще и правильнее (это я намудрил чего-то :))
а с текстбоксом - как-то так что ли:
[vba]
Код
With ActiveSheet
     .Range("$A$1:$A$21").AutoFilter Field:=1, Criteria1:=.TextBox1.Value
End With
[/vba]

Автор - nilem
Дата добавления - 20.07.2014 в 21:03
WeRiX Дата: Воскресенье, 20.07.2014, 21:15 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 4 ±
Замечаний: 0% ±

Excel 2013
Хм... нет мне нужно что-то вроде онлайн поиска по первым введенным буквам, чтобы он отображал все подходящие критерии, а не только одно.
поэтому я уперся в массив значений, сам мудрил от сложного)
 
Ответить
СообщениеХм... нет мне нужно что-то вроде онлайн поиска по первым введенным буквам, чтобы он отображал все подходящие критерии, а не только одно.
поэтому я уперся в массив значений, сам мудрил от сложного)

Автор - WeRiX
Дата добавления - 20.07.2014 в 21:15
nilem Дата: Воскресенье, 20.07.2014, 21:20 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
чтобы он отображал все подходящие критерии, а не только одно

[vba]
Код
Criteria1:="*" & .TextBox1.Value & "*"
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
чтобы он отображал все подходящие критерии, а не только одно

[vba]
Код
Criteria1:="*" & .TextBox1.Value & "*"
[/vba]

Автор - nilem
Дата добавления - 20.07.2014 в 21:20
WeRiX Дата: Воскресенье, 20.07.2014, 21:29 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 4 ±
Замечаний: 0% ±

Excel 2013
nilem, просто спасибище тебе) выручил. проще некуда аж стыдно)
Сразу вспомнился анекдот
Цитата
На крупном предприятии произошла поломка, все производство остановилось. Директор бегает, рвет на себе волосы, никто не может починить, предприятие несет убытки.

Вызывают специалиста. Он подходит к нужному месту и ударяет по какой-то железяке молотком. Все снова ожило, производство сдвинулось с «точки невозврата».

Директор счастлив, жмет специалисту руку. Тот благодарит за заказ и протягивает счет — 1000 евро.

Директор в недоумении: «Как, ты же один раз всего ударил?»
Специалист, спокойно: «Все верно — 1 евро за удар молотком, 999 — за знание куда и как правильно ударить.»
 
Ответить
Сообщениеnilem, просто спасибище тебе) выручил. проще некуда аж стыдно)
Сразу вспомнился анекдот
Цитата
На крупном предприятии произошла поломка, все производство остановилось. Директор бегает, рвет на себе волосы, никто не может починить, предприятие несет убытки.

Вызывают специалиста. Он подходит к нужному месту и ударяет по какой-то железяке молотком. Все снова ожило, производство сдвинулось с «точки невозврата».

Директор счастлив, жмет специалисту руку. Тот благодарит за заказ и протягивает счет — 1000 евро.

Директор в недоумении: «Как, ты же один раз всего ударил?»
Специалист, спокойно: «Все верно — 1 евро за удар молотком, 999 — за знание куда и как правильно ударить.»

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

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