Excel - Как подсчитать количество отдельных текстов определенной c даты внутри таблицы? - PullRequest
1 голос
/ 16 июня 2020

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

Образец данных с ожидаемым результатом:

Data Sample with expect result

Мне удалось выяснить, как подсчитать отдельные элементы из указанного мной диапазона, потому что я могу определить первую и последнюю строку, содержащую дату.

= SUMPRODUCT (1 / COUNTIF (B2: B15, B2: B15))

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

Я искал ответ, используя комбинацию CELL и MAXIFS, пример ниже, но Excel не принимает формулу. = CELL ("row", MAXIFS (A2: A15, A2: a15, D2))

Я просмотрел формулу ИНДЕКС, но не могу понять, как делать то, что я хочу. . ?

Есть идеи, что я делаю не так или что я должен делать вместо этого?

Спасибо, я ценю это!

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Если у вас есть Office 365 и новые c массивы Dynami, такая формула стала до смешного простой.

Эта формула в ячейке E3:

=COUNTA(UNIQUE(FILTER($B$2:$B$15,$A$2:$A$15=D3)))

Скопируйте.

Вы также можете создать уникальный список дат с помощью этой формулы в D3, который автоматически расширяется и не требует копирования.

=UNIQUE(A2:A15)

enter image description here

0 голосов
/ 17 июня 2020

Это было непросто, но, разделив каждый этап проблемы, я смог ее решить.

Обратите внимание, что мое решение работает только потому, что мои даты отсортированы.

Вот последняя формула в ячейке «Одна формула, чтобы управлять ими всеми»:

=SUMPRODUCT(1/COUNTIF(INDIRECT(CONCATENATE(ADDRESS((MATCH(D3,$A$2:$A$15,0)+1),2),":",ADDRESS(MAX(($A$2:$A$15=D3)*ROW($A$2:$A$15)),2))),INDIRECT(CONCATENATE(ADDRESS((MATCH(D3,$A$2:$A$15,0)+1),2),":",ADDRESS(MAX(($A$2:$A$15=D3)*ROW($A$2:$A$15)),2)))))

Вот мои объяснения моего процесса:

Data in Excel

Formula if I select the range : 
=SUMPRODUCT(1/COUNTIF(B2:B15,B2:B15))

Formula to get the first iteration
=ADDRESS((MATCH(D3,$A$2:$A$15,0)+1),2)

Formula to get the last iteration
{=ADDRESS(MAX(($A$2:$A$15=D3)*ROW($A$2:$A$15)),2)}

Create range from two addresses 
=INDIRECT(CONCATENATE(F3,":",G3))

Formula giving me the expect result
=SUMPRODUCT(1/COUNTIF(INDIRECT(CONCATENATE(F3,":",G3)),INDIRECT(CONCATENATE(F3,":",G3))))
...