Подсчет строк в Excel на основе дополнительных условий фильтрации - PullRequest
1 голос
/ 10 июля 2020

Я хотел бы подсчитать количество строк в Excel на основе нескольких необязательных условий. Я использую функцию COUNTIFSF, и она работает, но по мере роста условий формула Excel должна учитывать все возможные комбинации, что делает формулу очень большой. Мне интересно, есть ли лучший способ сделать это.

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

Образец с использованием двух дополнительных фильтров

Я использую следующую формулу для ячейки C10:

=IF(
  AND(B1<>"ALL", B2<>"ALL"), COUNTIFS(TB[Col1],B1, TB[Col2],B2), 
    IF(AND(B1<>"ALL", B2="ALL"), COUNTIFS(TB[Col1],B1,TB[Col1],"*"), 
      IF(AND(B1="ALL", B2<>"ALL"), COUNTIFS(TB[Col1],"*", TB[Col1],B2), 
      COUNTIFS(TB[Col1],"*", TB[Col1],"*"))))

Где TB - созданный мной объект таблицы Excel

В случае, если я присвоить значение ALL обоим фильтрам, он считает все строки для данного столбца, например, сценарий Filter1=ALL и Filter2=ALL вернет 6, а для: Filter1=A и Filter2=ALL вернет значение: 2

Как видите, добавление еще одного фильтра и столбца потребует 8 возможных комбинаций для оценки. В моем реальном примере мне понадобилось бы 4 фильтра, чтобы это решение не увеличивалось.

Другой обходной путь - добавление дополнительных ненужных столбцов, указывающих, какие ячейки следует учитывать (0, 1) на основе значений фильтра. Это означало бы наличие дополнительного столбца для каждого условия фильтрации. Мне интересно, есть ли более простой способ сделать это без использования сводной таблицы.

Примечание: Добавление текстового представления для облегчения воспроизведения его в excel:

Filter1 ALL     Col1    Col2
Filter2 ALL     A       AA
                B       BB
                C       CC
                D       DD
                A       AA
                D       DD      

1 Ответ

2 голосов
/ 10 июля 2020

Поместите IF в COUNTIFS:

=COUNTIFS(TB[Col1],IF(B1="ALL","*",B1),TB[Col2],IF(B2="ALL","*",B2))

введите описание изображения здесь

...