Как считать из просматриваемого диапазона в excel

У меня есть сводная таблица, в которой есть строка для набора городов. Я хочу подсчитать количество городов в определенном штате. Не хотелось бы включать состояние в сводную таблицу (хотя это упростило бы задачу).

Я попытался использовать следующую формулу:

={countif(index(city_ref[state], match(G15:G30,city_ref[city_name],0)),"=CA")}

Где:

  • city_ref — это таблица, в которой есть как минимум столбцы [city_name] и [state].

  • G15:G30 — строки сводной таблицы

Данные выглядят так (упрощенно):

city_ref:

city_name   | state
====================
Los Angeles | CA
Seattle     | WA
Portland    | OR
etc.

G15:G30:

     city_name
     ===========
G15: Los Angeles
G16: Seattle
     etc. (but not all of city_ref)

Я понимаю, что вы можете включить состояние в сводную таблицу, но а) это нежелательно (даже скрывать его) и б) есть другие, несвязанные данные, которые, когда состояние включено, сводная таблица создает дополнительные строки, которые искажают счет.

Поиск index match, кажется, возвращает массив, если используется сам по себе; если я использую fill handle, он создает массив ячеек со значениями поиска между G15:G30. Однако включение этого в countif, похоже, ничего не делает.

На странице справки для countif, которая у меня есть в Excel (к сожалению, я не могу найти онлайн-ссылку для ссылки), говорится, что range (первый аргумент) может быть массивом.

Я хочу иметь возможность брать произвольный массив значений, искать их в другой таблице и подсчитывать те, которые соответствуют моим критериям.


person 4lackof    schedule 01.08.2018    source источник
comment
Не могли бы вы опубликовать образцы ваших файлов/таблиц и желаемый результат, пожалуйста?   -  person Jbowman    schedule 02.08.2018
comment
Пожалуйста, отредактируйте ваш вопрос, включая образец ваших входных данных (предпочтительно текст, а не изображения) и пример желаемого результата. См. Как спросить и минимально воспроизводимый пример.   -  person girlvsdata    schedule 02.08.2018
comment
@Jbowman, girlvsdata, спасибо. я расширил это   -  person 4lackof    schedule 02.08.2018
comment
Как вы предлагаете обращаться с одинаковыми названиями городов в разных штатах, например: Richmond & Arlington in TX and VA Gainesville in FL and in VA Charleston in WVa and in SC Memphis in TN and in KY Nashville in TN and in KY?   -  person Jbowman    schedule 02.08.2018
comment
То, чего вы пытаетесь достичь, несколько похоже на это вопрос для меня.. Пожалуйста, поделитесь, если предложенный пример соответствует или не соответствует вашим потребностям.   -  person p._phidot_    schedule 02.08.2018


Ответы (2)


Что-то вроде этого ?

введите здесь описание изображения

{=SUM((IFERROR(MATCH($D$2:$D$7,INDEX(IF($B$2:$B$13=$F$2,$A$2:$A$13),),0),0)>0)*1)}

person J.Doe    schedule 02.08.2018
comment
Это работает. Два вопроса: 1. Я не заметил никакой разницы между включением index или нет (просто наличие if сам по себе) и 2. как работают пустые параметры, такие как ,)? Каковы правила, лежащие в основе этого (вероятно, проще всего, если вы предоставите ссылку, а не ответите на это в комментарии)? - person 4lackof; 02.08.2018
comment
@4lackof вы очень правы, индексная часть не нужна, я заметил после публикации и не редактировал ответ. для вашего второго вопроса отсутствие установки какого-либо значения для аргумента строки заставляет функцию возвращать массив индексированных значений. Более подробную информацию можно найти здесь:Функция ИНДЕКС в разделе ПРИМЕЧАНИЯ - person J.Doe; 03.08.2018

Почему бы вам просто не сделать копию сводной таблицы, добавить слайсер, чтобы пользователи могли фильтровать его по определенному состоянию, и добавить поле «Состояние» в область «Значения», чтобы оно учитывалось? Кажется контрпродуктивным указывать формулу в сводной таблице 1, когда вы можете просто заставить сводную таблицу 2 выполнять суммирование по состоянию.

person jeffreyweir    schedule 02.08.2018