Фильтрация в Excel для объединенных ячеек

Я пытаюсь подсчитать количество часов, отработанных каждым сотрудником над каждым проектом, над которым он работал. Но я не знаю, как выбрать, потому что ячейки, содержащие имя сотрудника, объединены, как на картинке. И если я хочу увидеть по проекту нет. 3, над которыми работали сотрудники, фильтр Excel не может использовать имя «Джон», которое соответствует только проекту № 1. Чтобы быть более ясным, мне нужно знать, как будет производиться фильтрация для ячеек A3 и A4. Если я отключу ячейки, Джон будет только в ячейке A2, и на самом деле он также работал над проектами 2 и 3.

Спасибо!


Если у вас есть объединенная ячейка, и вы пытаетесь отфильтровать ее, вы получите только первую строку:

Чтобы исправить это, вам сначала нужно запустить создав объединенные ячейки в другом месте, отключите ячейки-фильтры и заполните значениями все ячейки:

Затем вы можете скопировать объединенные ячейки и вставить специальную> форматы по ячейкам, которые хотите объединить:

Теперь вы можете удалить свои временные объединенные ячейки, и при фильтрации вы получите все строки для объединенной ячейки:

{EDIT} Вот макрос, который автоматически применяет указанные выше изменения к указанному диапазону:

  Public Sub FilterableMergedCells () Dim WorkingRange как RangeSelectRange: Установить WorkingRange = Nothing при ошибке Возобновить Далее Set WorkingRange = Application.InputBox («Выбрать диапазон», «Получить диапазон», Тип: = 8) При ошибке GoTo  0 'Если вы нажмете Отменить, если WorkingRange - ничего, то выйти из Sub' Если вы выберете несколько диапазонов, если WorkingRange.Areas.Count> 1 Затем MsgBox «Пожалуйста, выберите только 1 непрерывный диапазон», vbCritical GoTo SelectRange End If Dim ScreenUpdating As Boolean, DisplayAlerts As  Логическое, вычисление как XlCalculation ScreenUpdating = Application.ScreenUpdating DisplayAlerts = Application.DisplayAlerts Calculation = Application.Calculation Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculatio  nManual Dim WorkingCell As Range, MergeCell As Range, MergeRange As Range, OffsetX As Long, OffsetY As Long OffsetX = WorkingRange.Cells (1, 1) .Column - 1 OffsetY = WorkingRange.Cells (1, 1) .Row - 1 '  Создать временный лист для работы с Worksheets.Add WorkingRange.Copy .Cells (1, 1) 'Перебирать ячейки в диапазоне для каждой рабочей ячейки в WorkingRange.Cells' Если это объединенная ячейка Если WorkingCell. MergeCells Then 'If - верхняя/левая объединенная ячейка в диапазоне If Not Intersect (WorkingCell, WorkingCell.MergeArea.Cells (1, 1)) Is Nothing Then Set MergeRange = WorkingCell.MergeArea' Разъединить ячейки MergeRange.MergeCells = False 'Реплицировать  значение для всех ячеек в ранее объединенной области Для каждой ячейки MergeCell в MergeRange.Cells Если WorkingCell.FormulaArray = vbNull Then MergeCell.Formula = WorkingCell.Formula Else MergeCell.FormulaArray = WorkingCell.FormulaArray End If Old Next MergeCell 'Скопировать объединенное форматирование  .Cells (WorkingCell.Row - OffsetY, WorkingCell.Column - OffsetX) .MergeArea.Copy WorkingCell.PasteSpecial xlPasteFormats End If End If Next WorkingCell .Delete End With Set MergeRange = Ничего не задано WorkingRange = Nothing Application.ScreenplayUpdating = ScreenUpdating = ScreenUpdating = ScreenUpdating  DisplayAlerts Application.Calculation = CalculationEnd Sub  

0

iv>

Еще один вариант;

Фон условного форматирования для всех ячеек с определенным значением (например, Джон, красный фон), а затем отфильтруйте по цвету.

Не подходит для всех приложений, но красиво и быстро.

Поделиться
Улучшить этот ответ
12 окт.2020 в 8:26
добавить комментарий |

Еще один вариант;

Фон условного форматирования для всех ячеек с определенным значением (например, Джон, красный фон), а затем фильтровать по цвету.

Не подходит для всех приложений, но красиво и быстро.

Оцените статью
Botgadget.ru
Добавить комментарий