Добавьте еще один 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)
Если вы хотите изменить нумерацию идентификатора с помощью фильтра, используйте это для идентификатора:
=IFERROR(IF(SUBTOTAL(3,[@Value])=0,OFFSET([@ID],-1,0),1+OFFSET([@ID],-1,0)),1)