Формула структурированной ссылочной таблицы с отфильтрованными строками и формулой массива.Новые требования - PullRequest
0 голосов
/ 22 апреля 2019

Мне нужно несколько новых требований для этой проблемы, которые я не могу решить:

Без фильтра enter image description here

[# ID] -> счетчик строк

[значение] -> всего лишь множество положительных и отрицательных чисел

[цвет] -> просто категориальное поле

[отрицательное] -> 1, когда столбец значений отрицателен 0, когда положительный и кумулятивный отрицательный штрих

Формулы

[#ID] = ROW()-ROW(['# ID])+1
[negative] = IF([@['# ID]]=1,IF([@value]<0,1,0),IF([@value]<0,1+OFFSET([@negative],-1,0)),0))

Как это сохранить при фильтрации некоторых строк? Я хочу, чтобы максимальная отрицательная полоса (формула массива) и последовательность вычислений столбцов [отрицательный] и [ID] и полоса на видимых строках.Вот ожидаемый результат:

С фильтром

enter image description here

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Добавьте еще один IF, чтобы увидеть, не скрыта ли строка:

=IF(SUBTOTAL(3,[@Value])=0,..

Это вернет ИСТИНА, если скрыто, и ЛОЖЬ, если не скрыто.

В ИСТИНА ЕСЛИ мы используем значение выше:

=IF(SUBTOTAL(3,[@Value])=0,OFFSET([@Negative],-1,0),...

Если нет, то мы используем вашу текущую формулу:

=IF(SUBTOTAL(3,[@Value])=0,OFFSET([@Negative],-1,0),IF([@ID]=1,IF([@Value]<0,1,0),IF([@Value]<0,1+OFFSET([@Negative],-1,0),0)))

Но это будет ошибкой, когда первое значение отфильтрованных данных будет отрицательным, поэтому нам нужно зафиксировать это с помощью IFERROR:

=IFERROR(IF(SUBTOTAL(3,[@Value])=0,OFFSET([@Negative],-1,0),IF([@ID]=1,IF([@Value]<0,1,0),IF([@Value]<0,1+OFFSET([@Negative],-1,0),0))),1)

![enter image description here


Если вы хотите изменить нумерацию идентификатора с помощью фильтра, используйте это для идентификатора:

=IFERROR(IF(SUBTOTAL(3,[@Value])=0,OFFSET([@ID],-1,0),1+OFFSET([@ID],-1,0)),1)

enter image description here

1 голос
/ 22 апреля 2019

Предполагая, что таблица находится в B6:E18

Попробуйте эту формулу:

В поле [# ID]:

 = -1 + SUBTOTAL( 3, $D$6:$D7 )

В поле [отрицательный]:

 = IF( [@value] >= 0, 0,
 IF( [@['# ID]] = 1, 1,
 SUM( 1, INDEX( [negative], MATCH( -1 + [@['# ID]], ['# ID], 0 ) ) ) ) )

Макс. Отрицательная полоса на C2 (lo.Data - это имя Table)

 =MAX( lo.Data[negative] )

enter image description here

enter image description here

Предлагаем ознакомиться со следующими страницами для получения дополнительной информации об используемых функциях:
Функции Excel (в алфавитном порядке)
СУБТОТАЛЬНАЯ функция
функция INDEX
Функция MATCH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...