Есть задача (мне кажется не выполнимая), в таблице при применении обычного фильтра выводятся ВСЕ строки которые содержат данное значение, но нужно сделать так чтобы при применении фильтра выводились не только строки имеющие данное значение но и так сказать виртуально объединенные между собой строки,
т.е. в данной таблице к каждому сотруднику присвоено 6 строк, и так называемая карточка сотрудника состоит из 6 строк, но при применении фильтра выводится только одна строка и остальная информация о сотруднике обрубается, но нужно чтоб выводилась все строки по каждому сотрдунику по которому есть совпадения в том или ином столбце.
Не уверен что смог все понятно объяснить, поэтому прилагаю картинки: Исходная таблица: Вот как выглядит таблица если применить стандартный фильтр (сортирую по столбцу ВУЗ - значение ТЕХНИКУМ) тут мы видим что при применении фильтра уже нельзя увидеть информацию о работе сотрудника (их минимум 3, в данном примере они обозначены как ПЕРВАЯ, ВТОРАЯ, ТРЕТЬЯ) Вот как хочу чтобы работало - при сортировке по значению ВУЗ - техникум, все сотрудники и полные их карточки (6 строк относящихся к этому сотруднику) будут отображаться полностью.
Также прилагаю исходник таблицы. Очень надеюсь что с вашей помощью получится решить задачу Заранее всем большое спасибо.
Есть способ тупой и неправильный, но быстрый и понятный. В ячейках, где сотрудник, заполняете все строки (все 6 строк), одинаковыми значениями (ФИО). Одно из этих значений оставляете автоматическим цветом отображать, а у остальных меняете цвет шрифта на цвет фона.
А в целом, как говорили классики - объединенные ячейки = ЗЛО.
Пытливый написал: В ячейках, где сотрудник, заполняете все строки (все 6 строк), одинаковыми значениями (ФИО)
Но такой способ работает только если я буду фильтровать по тем столбцам где все 6 строк заполнены таким образом, это подходит для столбцов ФИО и тд, но там еще куча столбцов где в каждой строке будут разные значения, например вуз, место работы и тд по которым как раз и будут производиться фильтры
Ну, тогда, имхо, только менять порядок расположения данных - одна строка - одна запись. А уж потом сортировать, отбирать и через сводные и прочие отчеты выводить в каком хошь виде.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
В каком файле ? у вас во вложении тот же самый что и я скинул
Цитата
Jack Famous написал: А вообще умные таблицы, справочники, базы
Да согласен с вами, но в данной задаче важна наглядность и простота чтоб в одном месте было все видно, и именно excel. Можно конечно на дельфи написать программку в связке с access или sql но это уже другая совсем история и время конечно же )
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Таблицу посмотрел, да это вариант схож с тем что предлагал Пытливый, но думаю сотрудников это не устроит. Думаю видимо возможности Excel в данном случае не оставляют другого выбора кроме как искать решение в других ПО либо писать свое (( эххх
Это то что нужно !!! Спасибо большое Вам!! Только вот разобраться бы теперь как это работает ) Потому что у некоторых сотрудников может быть больше 5 строк и т.д.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr&, i&
If Target.Address <> "$F$2" Then Exit Sub
Application.ScreenUpdating = False
Rows.Hidden = False
lr = Cells(Rows.Count, 1).End(xlUp).Row
lr = lr + Cells(lr, 1).MergeArea.Rows.Count - 1
If Cells(2, 6).Value = "В С Е" Then Exit Sub
Rows("4:" & lr).Hidden = True
For i = 4 To lr
If Cells(i, 7) = Cells(2, 6) Then
Range("A" & i).MergeArea.EntireRow.Hidden = False
End If
Next
End Sub
Private Sub Worksheet_Calculate()
Dim r As Range, ar As Range, sRows As Range
Dim dic As Object, adic, i&
With ActiveSheet
If .AutoFilterMode Then
If .AutoFilter.Filters(7).On Then
Application.ScreenUpdating = False
Application.EnableEvents = False
Set dic = CreateObject("Scripting.Dictionary")
Set r = .AutoFilter.Range.SpecialCells(xlCellTypeVisible)
For Each ar In r.Areas
For Each sRows In ar.Rows
dic.Item(sRows.Row) = 1
Next
Next
.AutoFilter.Range.AutoFilter Field:=7, Criteria1:="@"
adic = dic.keys
For i = LBound(adic) To UBound(adic)
Range("A" & adic(i)).MergeArea.EntireRow.Hidden = False
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End If
End With
End Sub
Отличные новости и подъем настроения с утра в понедельник )))) Второй вариант _Igor_61 то что нужно, но версия с фильтром от RAN более подходит за счет того что не придется создавать дополнительные ячейки для фильтра. Проверил добавление или удаление строк в "карточках" сотрудников, фильтр все учитывает Но единственный момент - прошу подсказать как данный скрипт пивязать к каждому столбцу, идея такова чтобы фильтровать можно было по любому столбцу. Заранее спасибо
При применении фильтров к нескольким столбцам, результаты могут отличаться от ожидаемых.
Код
Private Sub Worksheet_Calculate()
Dim r As Range, ar As Range, sRows As Range
Dim dic As Object, adic, i&, fi&
With ActiveSheet
If .AutoFilterMode Then
For i = 1 To .AutoFilter.Filters.Count
If .AutoFilter.Filters(i).On Then fi = i
Next
If fi Then
Application.ScreenUpdating = False
Application.EnableEvents = False
Set dic = CreateObject("Scripting.Dictionary")
Set r = .AutoFilter.Range.SpecialCells(xlCellTypeVisible)
For Each ar In r.Areas
For Each sRows In ar.Rows
dic.Item(sRows.Row) = 1
Next
Next
.AutoFilter.Range.AutoFilter Field:=fi, Criteria1:="@"
adic = dic.keys
For i = LBound(adic) To UBound(adic)
Range("A" & adic(i)).MergeArea.EntireRow.Hidden = False
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End If
End With
End Sub
RAN, спасибо, обновление попробовал сразу по нескольким фильтр поставить (город и место учебы) отфильтровал корректно, единственный момент после того как фильтр применяешь то галочка которую поставил пропадает, например на значение "школа" поставил - карточки сотрудников отобразились нужные, но галочка снялась со значение "школа" и в итоге если по другим столбцам потом фильтры выставлять то в один момент все пропадает - пока назад не вернешся и галочки пропавшие не поставишь )) Как нибудь возможно решить ?