Формула на Excel: Търсете стойност в множество работни листове -

Обща формула

=COUNTIF(INDIRECT("'"&sheetname&"'!"&"range"),criteria)

Обобщение

За да търсите стойност в няколко работни листа в работна книга и да върнете преброяване, можете да използвате формула, базирана на функциите COUNTIF и INDIRECT. С някои предварителни настройки можете да използвате този подход за търсене в цяла работна книга за конкретна стойност. В показания пример формулата в C5 е:

=COUNTIF(INDIRECT("'"&B7&"'!"&"1:1048576"),$C$4)

Контекст - примерни данни

Работната книга съдържа общо 4 работни листа. Лист1 , Лист2 и Лист3 съдържат по 1000 произволни имена, които изглеждат така:

Обяснение

Диапазонът B7: B9 съдържа имената на листове, които искаме да включим в търсенето. Това са само текстови низове и трябва да свършим малко работа, за да бъдат разпознати като валидни препратки към листа.

Работейки отвътре навън, този израз се използва за изграждане на пълен референтен лист:

"'"&B7&"'!"&"1:1048576"

Единичните кавички се добавят, за да позволят имена на листове с интервали, а удивителен знак е стандартен синтаксис за диапазони, които включват име на лист. Текстът "1: 1048576" е диапазон, който включва всеки ред в работния лист.

След като B7 е оценен и стойностите са обединени, горният израз се връща:

"'Sheet1'!1:1048576"

което влиза във функцията INDIRECT като аргумент 'ref_text'. INDIRECT оценява този текст и връща стандартна препратка към всяка клетка в Sheet1 . Това влиза във функцията COUNTIF като диапазон. Критериите се предоставят като абсолютна препратка към C4 (заключена, за да може формулата да бъде копирана надолу в колона C).

След това COUNTIF връща брой на всички клетки със стойност, равна на "mary", 25 в този случай.

Забележка: COUNTIF не чувствителен към регистъра.

Съдържа срещу равни

Ако искате да преброите всички клетки, които съдържат стойността в C4, вместо всички клетки, равни на C4, можете да добавите заместващи символи към критериите като този:

=COUNTIF(INDIRECT("'"&B7&"'!"&"1:1048576"),"*"&C4&"*")

Сега COUNTIF ще брои клетки с подниза "Джон" навсякъде в клетката.

производителност

Като цяло не е добра практика да се определя диапазон, който включва всички клетки на работния лист. Това може да доведе до проблеми с производителността, тъй като обхватът включва милиони и милиони клетки. В този пример проблемът се усложнява, тъй като формулата използва функцията INDIRECT, която е нестабилна функция. Летливите функции се преизчисляват при всяка промяна на работния лист, така че въздействието върху производителността може да бъде огромно.

Когато е възможно, ограничете диапазоните до разумен размер. Например, ако знаете, че данните няма да се показват след ред 1000, можете да търсите само първите 1000 реда по този начин:

=COUNTIF(INDIRECT("'"&B7&"'!"&"1:1000"),$C$4)

Интересни статии...