В таблице три столбца содержат условия. Столбцы: D:D, E:E, F:F Один столбец содержит значения. Столбец: G:G Очень нужно на отдельном листе сделать выдачу значений по условиям с помощью выпадающих списков. Условия из каждого столбца должны быть без повторений в соответствующем выпадающем списке. Выдача значений должна осуществляться как по одному любому условию, так и по нескольким сразу. Получается аналог фильтрации. Можно ли реализовать подобное?
Mershik,Фамилии могут быть любые, Участки и Категории тоже. Но если указано "Иванов", то это один Иванов, другого не будет. Если я вас правильно поняла.
Дарья Адамовская, не вопрос не в этом, вопрос в том могут ли в отборе сразу участвовать Иванов цех 4 и петров кадры ? или только одна фамилии или один участок или одна категория *ну или все вместе или по отедльности? а еще нае понятно что желаемый результат - вывести перечень номеров и № п/п?
Mershik, в отборе может участвовать только одна фамилия и/или участок и/или категория. Т.е. несколько значений из одного столбца в отборе участвовать не могут. Только одно значение из столбца. Желаемый результат - вывести список номеров, в зависимости от выбранных значений и пронумеровать по порядку
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