Страницы: 1
RSS
Формирование списка фамилий отсутствующих из столбца А по критерию, приведенному в столбце В
 
Добрый день, уважаемые мастера!

Прошу подсказать, как можно решить приведенную ниже задачу, я встал в тупик!

Есть два столбца, в одном из них перечислены фамилии, во втором указана причина отсутствия. Как сделать в третьем столбце динамический список, в котором будут собраны фамилии отсутствующих людей, сгруппированные по причинам отсутствия. Пробовал через ЕСЛИОШИБКА в связке с ИНДЕКС и ПОИСКПОЗ, но в результате получается так, что формируется список только по одной из причин отсутствия, а остальные отбрасываются. Я зашел в тупик. Может кто-то направить меня на путь истинный? Пример прикладываю.
Прошу тапками не бить, обращаюсь к Вам, как  к последней надежде.

Заранее спасибо.
 
Сделайте сводную и никакие хитрости не потребуются.
По вопросам из тем форума, личку не читаю.
 
Можно формулой, типа так:
Код
=IFERROR(INDEX($A$2:$A$10;AGGREGATE(15;6;ROW($A$2:$A$10)-ROW($A$2)+1/($B$2:$B$10={"болеет"\"отпуск"\"смена"});ROW(A1)));"")

но при такой организации данных придется ее переносить и подстраивать под каждый список.
Изменено: memo - 07.11.2021 19:40:57
 
,
Код
Sub mrshkei()
Dim arr, arr2, arr3, i As Long, lr As Long, n As Long, k As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
Range("E2:E" & Cells(Rows.Count, 5).End(xlUp).Row + 1).Clear
arr = Range("A2:B" & lr): k = 1
arr2 = Array("болеет", "отпуск", "смена")
ReDim arr3(1 To lr, 1 To 1)
For i = LBound(arr) To UBound(arr)
    For n = LBound(arr2) To UBound(arr2)
        If InStr(1, arr(i, 2), arr2(n), 1) > 0 Then
            arr3(k, 1) = arr(i, 1)
            k = k + 1
        End If
    Next n
Next i
Range("E2").Resize(UBound(arr3), 1) = arr3
End Sub

Изменено: Mershik - 07.11.2021 20:17:32
Не бойтесь совершенства. Вам его не достичь.
 
PQ
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Фамилия", type text}, {"Причина отсутствия", type text}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Фамилия", "Список отсутствующих"}}),
    #"Filtered Rows" = Table.SelectRows(#"Renamed Columns", each ([Причина отсутствия] <> null)),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Причина отсутствия"})
in
    #"Removed Columns"
Изменено: jakim - 07.11.2021 20:53:25
 
Спасибо огромное всем откликнувшимся, к сожалению, сводные таблицы использовать не очень удобно, в силу ряда причин, поэтому приходится писать формулами, и Вы мне очень помогли! Большое спасибо еще раз! А макрос вообще божественен, мне к этому еще стремиться и стремиться!)
Страницы: 1
Наверх