Если я правильно понимаю ваш вопрос, вы хотите буквально посчитать количество ячеек, использованных в формуле, которое в вашем примере равно суммированию 6 значений из 6 разных мест .
Я использовалследующий пример для демонстрации моего решения:
Сумма =A1+B1+C1+D1+E1+F1
равна 10
, где ячейка C1
имеет значение 0
в нем, но ячейка E1
пуста.
Используя следующую формулу массива Я смог подсчитать количество ячеек, имеющих значение, отличное от 0
:
=SUMPRODUCT(IFERROR(ABS(N(INDIRECT(TRIM(MID(SUBSTITUTE(RIGHT(FORMULATEXT(A3),LEN(FORMULATEXT(A3))-1),"+",REPT(" ",100)),100*ROW(INDIRECT("1:"&LEN(FORMULATEXT(A3))))-99,100)))))>0,0)*1)
Обратите внимание: MUST нажмите Ctrl + Shift + Введите после завершения формулы в строке формул, в противном случае они будутне работает правильно.
Логика заключается в том, чтобы использовать комбинацию TRIM + MID + ЗАМЕНА + ПРАВО + FORMULATEXT + REPT + ROW + INDIRECT , чтобы извлечь адреса ячеек из исходной формулы, а затем использовать INDIRECT для преобразования адреса ячейки в значения, хранящиеся в этих ячейках, затем используйте комбинацию IFERROR + ABS + N , чтобы выяснить, не является ли какое-либо из этих значений 0
,и, наконец, используйте SUMPRODUCT , чтобы сложить все TRUE
результаты.
Очевидно, что у моего решения есть пара ограничений:
- Если ваша фактическая формула не строго в форме
A+B+C+D+E+F
, то моя ЗАМЕНЯЮЩАЯ часть формулы нуждается в дальнейшей модификации; - Формула будет обрабатывать ячейки, содержащие
0
как пустыеи не включает их в счет.
Дайте мне знать, если у вас есть какие-либо вопросы. Ура :) 1061 *