Страницы: 1
RSS
Выборка из таблицы по нескольким условиям
 
Всем привет! Буду рада вашей помощи )

В таблице три столбца содержат условия.
Столбцы: D:D, E:E, F:F
Один столбец содержит значения.
Столбец: G:G
Очень нужно на отдельном листе сделать выдачу значений по условиям с помощью выпадающих списков. Условия из каждого столбца должны быть без повторений в соответствующем выпадающем списке. Выдача значений должна осуществляться как по одному любому условию, так и по нескольким сразу.
Получается аналог фильтрации.
Можно ли реализовать подобное?
Изменено: vikttur - 07.09.2021 17:15:10
 
Может эта статья вам поможет?
 
Цитата
Дарья Адамовская написал:
Очень нужно на отдельном листе сделать выдачу значений по условиям
а условия могут быть что это разные ФИО?
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,Фамилии могут быть любые, Участки и Категории тоже. Но если указано "Иванов", то это один Иванов, другого не будет. Если я вас правильно поняла.;)  
Изменено: Дарья Адамовская - 07.09.2021 15:16:56
 
Дарья Адамовская, не вопрос не в этом, вопрос в том могут ли в отборе сразу участвовать Иванов цех 4 и петров кадры ? или только одна фамилии или один участок или одна категория *ну или все вместе или по отедльности? а еще нае понятно что желаемый результат - вывести перечень номеров и № п/п?

вы проверили прием предложенный от andylu?
Изменено: Mershik - 07.09.2021 15:25:40
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, в отборе может участвовать только одна фамилия и/или участок и/или категория. Т.е. несколько значений из одного столбца в отборе участвовать не могут. Только одно значение из столбца. Желаемый результат - вывести список номеров, в зависимости от выбранных значений и пронумеровать по порядку  :D  
 
Номер учета
Код
==IFERROR(INDEX(Учет!G$2:G$100;AGGREGATE(15;6;ROW($1:$100)/(B$2=Учет!D$2:D$100)/(B$3=Учет!E$2:E$100)/(B$4=Учет!F$2:F$100);ROWS($2:2)));"")
Нумерация
Код
=IF(E2<>"";ROWS($2:2);"")
Изменено: jakim - 07.09.2021 16:49:56
 
вариант на pq
Код
let
    q = Table.FromColumns({Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content][Столбец1], Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content][Столбец2],  List.FirstN(List.Skip(Table.ColumnNames(Excel.CurrentWorkbook(){[Name="Таблица6"]}[Content]), 3), 3)}),
    q1 = Table.SelectRows(q, each ([Column2] <> null)),
    a = Table.PromoteHeaders(Table.Transpose(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content])),
    b = Table.Join(a, q1[Column1], Excel.CurrentWorkbook(){[Name="Таблица6"]}[Content], q1[Column3])[[Категория], [Номер]]
in
    b
 
Дарья Адамовская, еще вариант макросом:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B2:B4")) Is Nothing Then
    Dim arr, arr2, arr3, arr4, i As Long, n As Long, lr As Long, lr2 As Long, k As Long
    Dim sh As Worksheet
    Set sh = Worksheets("Учет")
    lr = sh.Cells(Rows.Count, 7).End(xlUp).Row
    arr = sh.Range("A2:G" & lr)
    arr2 = Range("B2:B4")
    ReDim arr3(1 To UBound(arr), 1 To 2): k = 1
        If arr2(1, 1) = Empty Then x1 = "" Else x1 = arr2(1, 1)
        If arr2(2, 1) = Empty Then x2 = "" Else x2 = arr2(2, 1)
        If arr2(3, 1) = Empty Then x3 = "" Else x3 = arr2(3, 1)
        X = LCase(x1 & x2 & x3)
    For i = LBound(arr) To UBound(arr)
        If x1 = "" Then x1 = x11 Else x11 = arr(i, 4)
        If x2 = "" Then x2 = x22 Else x22 = arr(i, 5)
        If x3 = "" Then x3 = x33 Else x33 = arr(i, 6)
        XX = LCase(x11 & x22 & x33)
        If X = XX Then
            arr3(k, 1) = k
            arr3(k, 2) = arr(i, 7)
            k = k + 1
        End If
    Next i
    Range("D2:E" & Cells(Rows.Count, 4).End(xlUp).Row + 1).Clear
    Range("D2").Resize(UBound(arr3), 2) = arr3
End If
End Sub

Не бойтесь совершенства. Вам его не достичь.
 
Ребята, всем огромное спасибо. Mershik, решение супер удобное, спасибо ))
Страницы: 1
Наверх