Excel - формула массива сокращения для нескольких пар столбцов - PullRequest
0 голосов
/ 20 октября 2018

У меня есть следующий пример матрицы:

A   B   C   D   E
1   1   1   1   1
2   1       1   
3   1   1       
4           1   1
5       1       1

Моя задача заключалась в подсчете количества строк, для которых хотя бы одна пара столбцов, исключая строку A, включала записи в оба столбца (например, B & Cсделай одну пару, D & E сделай другую).В приведенном выше примере ответ 3: строка 1 содержит записи для обеих пар столбцов, строка 3 содержит записи для первой пары столбцов (B & C), а строка 4 содержит записи для второй пары столбцов (D & E).Это 3 строки, которые содержат данные по крайней мере для одной назначенной пары столбцов.

Следующая формула массива дает желаемые результаты:

=COUNT(IFS(SUBTOTAL(2,OFFSET(B1,ROW(B1:B5)-ROW(B1),0,1,COLUMNS(B1:C1)))>1,SUBTOTAL(2,OFFSET(A1,ROW(A1:A5)-ROW(A1),0,1,COLUMNS(A1))),SUBTOTAL(2,OFFSET(D1,ROW(D1:D5)-ROW(D1),0,1,COLUMNS(D1:E1)))>1,SUBTOTAL(2,OFFSET(A1,ROW(A1:A5)-ROW(A1),0,1,COLUMNS(A1)))))

Проблема в том, что у меня около 30 пар столбцов(некоторые несмежные) и относительно большой набор данных (до 10000 строк).Я ищу более эффективный способ достижения желаемого результата в формуле Excel. Обратите внимание, что я хочу избегать создания новых строк или столбцов, поэтому я использовал формулу массива

1 Ответ

0 голосов
/ 21 октября 2018

Не совсем уверен, почему вы включаете в пример столбец А. Если он на самом деле не имеет значения.

Как таковой, для диапазона B1:E5:

=SUMPRODUCT(N(MMULT((B1:D5<>"")*(C1:E5<>"")*ISEVEN(COLUMN(C1:E5)-MIN(COLUMN(C1:E5))),ROW(INDEX(A:A,1):INDEX(A:A,COLUMNS(B1:D5)))^0)>0))

Расширяйте диапазоны по мере необходимости, хотя обратите внимание, что деталь A:A в конструкциях INDEX должна оставаться постоянной.

Нет необходимости в CSE с вышеприведенным.

С уважением

...