Получить количество ячеек, используемых в формуле Excel - PullRequest
0 голосов
/ 07 октября 2019

Я хочу получить количество ячеек, используемых в функции Excel. Например, скажем, у меня есть функция суммы ='CV'!D11+Farmer!D11+'County'!D11+Rt!D11+WT!D11+'Country'!D11 Мне нужна функция, которая скажет мне, сколько ячеек было использовано для получения общей суммы. В данном случае это 6. Самое сложное, если одна из использованных ячеек пуста, я не хочу, чтобы она считалась. Например, скажите, что ячейка D11 на листе Фермера пуста, и я не хочу, чтобы она учитывалась в общем количестве. Итого всего должно быть 5.

Ответы [ 3 ]

1 голос
/ 07 октября 2019

Использовать COUNT:

=COUNT('CV'!D11,Farmer!D11,'County'!D11,Rt!D11,WT!D11,'Country'!D11)

Он будет считать ячейку, только если у нее есть номер

0 голосов
/ 08 октября 2019

Если я правильно понимаю ваш вопрос, вы хотите буквально посчитать количество ячеек, использованных в формуле, которое в вашем примере равно суммированию 6 значений из 6 разных мест .

Я использовалследующий пример для демонстрации моего решения:

My example

Сумма =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 результаты.

Очевидно, что у моего решения есть пара ограничений:

  1. Если ваша фактическая формула не строго в форме A+B+C+D+E+F, то моя ЗАМЕНЯЮЩАЯ часть формулы нуждается в дальнейшей модификации;
  2. Формула будет обрабатывать ячейки, содержащие 0 как пустыеи не включает их в счет.

Дайте мне знать, если у вас есть какие-либо вопросы. Ура :) 1061 *

0 голосов
/ 07 октября 2019

Вы должны действительно попытаться сопоставить все свои данные на одном листе перед выполнением расчетов. Для примера, я предполагаю, что у вас есть это в диапазоне A1:A5, тогда вы можете добавить обработку различных случаев, используя формулы массива :

  1. Получитьколичество непустых ячеек (в моем опыте функция ISBLANK не заслуживает доверия): {SUM(IF(LEN(A1:A5)>0,1,0))}
  2. Получите сумму этих ячеек: SUM(A1:A5)

(необходимо использовать Ctrl + Shift + Введите , чтобы ввести формулу в виде формулы массива, вы будете знать, что она работает, если формула имеет вид {IF(...)} ​​ с фигурными скобками )

Поскольку пустые / пропущенные значения неявно обрабатываются как 0 в функции SUM, этот случай прост. Если у вас есть другие проверки, вам нужно будет также написать формулу массива для суммирования. Например, включая только числа между минимальным и максимальным порогом (например, если вы хотите исключить выбросы):

{SUM(IF(AND(A1:A5 >= yourMinValue, A1:A5 < yourMaxValue), A1:A5, 0)}.

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