Добрый вечер.

Я пытаюсь заставить свои формулы игнорировать скрытые строки в отфильтрованной таблице. Я попробовал некоторые из показанных здесь трюков, но мне это не удалось.

CSV, который я получил от BigFix (инструмент управления сетью), выглядит примерно так: [Таблица]

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

enter image description here

=COUNTIF('Input Data'!C:C,"*"&Results!A2&"*")

Я хочу иметь возможность фильтровать таблицу на первой вкладке и получать точные результаты формулы на второй вкладке.

Любые идеи?

ОБНОВЛЕНИЕ: я чувствую, что дополнительная информация поможет. Причина, по которой я хочу, чтобы вкладка «результаты» обновлялась автоматически, заключается в том, что я планирую построить графики на основе информации на этой вкладке. Я хотел бы иметь возможность фильтровать таблицу во «входных данных», чтобы включать только отдел A и автоматически обновлять график для информации отдела A.

Файлы Excel, с которыми я работаю, содержат до тысячи записей, и я пытаюсь получить графики, которые можно скопировать / вставить, чтобы как можно эффективнее вставить в презентацию.

2
user112802 11 Май 2016 в 07:11

2 ответа

Лучший ответ
=SUMPRODUCT(SUBTOTAL(3,OFFSET('Input Data'!C:C,ROW('Input Data'!C:C)-MIN(ROW('Input Data'!C:C)),,1))*(ISNUMBER(SEARCH(A2,'Input Data'!C:C))))

В приведенной выше формуле ограничьте C: C вашим фактическим диапазоном данных или используйте именованный диапазон для определения фактического диапазона данных.

Изменить

Приведенную выше формулу следует заменить на 103 вместо 3, как указывает Jeep.

=SUMPRODUCT(SUBTOTAL(103,OFFSET('Input Data'!C:C,ROW('Input Data'!C:C)-MIN(ROW('Input Data'!C:C)),,1))*(ISNUMBER(SEARCH(A2,'Input Data'!C:C))))

В приведенной выше формуле ограничьте C: C вашим фактическим диапазоном данных или используйте именованный диапазон для определения фактического диапазона данных.

Добавление объяснения на основе запроса OP.

В приведенной выше формуле Used Sumproduct () Subtotal () Offset () Min () Row () IsNumber () Search () комбинации функций для получения ожидаемого результата.

Row () - получит номер строки заданного диапазона.

Мин () - получит минимальное значение заданных чисел.

Offset () - используется для перенаправления ссылки на каждую ячейку заданного диапазона.

Промежуточный итог () - используется для поиска (не) скрытого состояния перенаправленной ссылки.

Поиск () - используется для поиска определенного текста в заданном диапазоне (без учета регистра) приведет к числовому результату или ошибке.

IsNumber () Используется для проверки того, возвращает ли поиск число или ошибку. Таким образом, Isnumber вернет логическое значение True / False в качестве результата.

Столбец C Столбец D

Данные для фильтрации

А 1

Б 1

А 1

А 2

А 2

Приведенные выше данные начинаются с 1-й строки с заголовками в 1-й строке. Предположим, что я отфильтровал столбец D с помощью 1. Использование приведенной ниже формулы приведет к 2.

= СУММПРОИЗВ (ПРОМЕЖУТОЧНЫЙ ИТОГ (103; СМЕЩЕНИЕ ('Входные данные'! C2: C6, ROW ('Входные данные'! C2: C6) -MIN (ROW ('Входные данные'! C2: C6)) ,, 1)) * (ISNUMBER (SEARCH ("a", 'Входные данные'! C2: C6))))

ROW ('Входные данные'! C2: C6) = {2; 3; 4; 5; 6}

MIN (ROW ('Входные данные'! C2: C6)) = 2

ROW ('Входные данные'! C2: C6) -MIN (ROW ('Входные данные'! C2: C6)) следует читать как {2; 3; 4; 5; 6} -2 = {0; 1; 2; 3; 4}

OFFSET ('Входные данные'! C2: C6, ROW ('Входные данные'! C2: C6) -MIN (ROW ('Входные данные'! C2: C6)) ,, 1) = 'Входные данные'! C2, ' Входные данные '! C3,' Входные данные '! C4,' Входные данные '! C5,' Входные данные '! C6

SUBTOTAL (103, OFFSET ('Входные данные'! C2: C6, ROW ('Входные данные'! C2: C6) -MIN (ROW ('Input Data'! C2: C6)) ,, 1)) должен читаться как

SUBTOTAL (103, 'Входные данные'! C2, 'Входные данные'! C3, 'Входные данные'! C4, 'Входные данные'! C5, 'Входные данные'! C6) = {1; 1; 1; 0; 0 } Subtotal () показывает видимое состояние каждой ссылки (ячейки).

ПОИСК ("a", 'Входные данные'! C2: C6) = {1; #VALUE!; 1; 1; 1}

ISNUMBER (SEARCH ("a", 'Входные данные'! C2: C6)) следует читать как ЕЧИСЛО ({1; # ЗНАЧ!; 1; 1; 1}) = {ИСТИНА; ЛОЖЬ; ИСТИНА; ИСТИНА; ИСТИНА}

ПРОМЕЖУТОЧНЫЙ ИТОГ (103, СМЕЩ ('Входные данные'! C2: C6, ROW ('Входные данные'! C2: C6) -MIN (ROW ('Входные данные'! C2: C6)) ,, 1)) = {1; 1; 1; 0; 0}

(ISNUMBER (SEARCH ("a", 'Входные данные'! C2: C6))) = {ИСТИНА; ЛОЖЬ; ИСТИНА; ИСТИНА; ИСТИНА}

{1; 1; 1; 0; 0} * {TRUE; FALSE; TRUE; TRUE; TRUE} = {1; 0; 1; 0; 0}

СУММПРОИЗВ ({1; 0; 1; 0; 0}) = 2

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

1
Sixthsense 11 Май 2016 в 06:06

Вместо фильтрации исходных данных используйте функцию Countifs и добавьте условия фильтрации в Countifs.

1
teylyn 11 Май 2016 в 04:23