Формула Google Sheets для подсчета вхождений уникальных значений в столбцы

#google-sheets #formula #array-formulas

#google-sheets #формула #массив-формулы

Вопрос:

Я ищу формулу, возможно, =query, которая превратит это:

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

В это:

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

Я успешно использовал следующую формулу, чтобы получить изображение ПОСЛЕ, но я не могу получить количество. Я пытался использовать конкатенацию, но нет способа сделать это для каждого элемента в массиве. Может быть, есть способ сделать это с помощью запроса?

 =transpose(split(join(",",unique(C1:C98)),","))
 

Ответ №1:

И вот мой вариант, который также нужно перетащить вправо, чтобы заполнить другие столбцы:

 =ARRAYFORMULA(QUERY(
   {UNIQUE(A$2:A) amp; " - " amp; COUNTIF(A$2:A,UNIQUE(A$2:A))},
   "where Col1<>' - 0'",0))
 

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

Комментарии:

1. where Col1<>' - 0' Это очень умно. Престижность.

2. @marikamitsos Спасибо! Я понял, что должен как-то это исправить, когда впервые увидел результат…

3. Приятно, именно то, что я искал. Спасибо!

Ответ №2:

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

 =ArrayFormula(index(query(A2:A,"select A,count(A) where A is not null group by A label count(A) ''"),0,1)amp;"-"amp;index(query(A2:A,"select A,count(A) where A is not null group by A label count(A) ''"),0,2))
 

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

Прошу прощения, для того, чтобы перетащить его через вас, вам пришлось бы положить:

 =ArrayFormula(index(query({A2:A},"select Col1,count(Col1) where Col1 is not null group by Col1 label count(Col1) ''"),0,1)
amp;"-"amp;index(query({A2:A},"select Col1,count(Col1) where Col1 is not null group by Col1 label count(Col1) ''"),0,2))
 

Ответ №3:

Попробуйте выполнить следующее в ячейке A2 и перетащите вправо.

 =ARRAY_CONSTRAIN(ArrayFormula(IFERROR(CONCAT(UNIQUE(A2:A99)amp;" - ", 
                 ArrayFormula(COUNTIFS(A2:A99,UNIQUE(A2:A99)))))),COUNTUNIQUE(A2:A99),1)
 

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

Также с использованием запроса

 =ArrayFormula(index(query({A2:A},"select Col1,count(Col1) where Col1 is not null group by Col1 label count(Col1) ''"),0,1)amp;"-"amp; 
              index(query({A2:A},"select Col1,count(Col1) where Col1 is not null group by Col1 label count(Col1) ''"),0,2))
 

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

Используемые функции: