Следующий лист иллюстрирует проблему:
Я хочу узнать, есть ли в диапазоне непустые ячейки, но после автогенерации листа я не могу обратиться к этому диапазону напрямую (B3:B5
). Он является относительным к некоторому столбцу.
По соображениям производительности я хочу использовать функцию INDEX
вместо INDIRECT
, но когда я передаю результат INDEX
в COUNTA
, я получаю 3 незаполненные ячейки, хотя у меня их всего 2.
Почему COUNTA(INDEX($1:$24, {3;4;5}, 2))
дает другой результат, чем COUNTA(INDIRECT(ADDRESS(3, 2) & ":" & ADDRESS(5, 2)))
?
и пустая ячейка является 0
в массиве, тогда как Indirect возвращает диапазон:
В массиве 0
считается как 1
, но поскольку второй ссылается на диапазон, он видит B4 пустым и не считает его.
Мы все еще можем использовать INDEX и вернуть адрес к графу:
=COUNTA(INDEX($1:$24, 3, 2):INDEX($1:$24, 5, 2))
У этого есть роскошь не быть волатильным и все еще видеть B4 пустым.