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

Например, столбец B3 содержит

Понедельник вторник среда

Функция count возвращает значение 1 вместо 3 - есть ли способ четко подсчитать три дня? Спасибо!

Множественный выбор из выпадающего списка стал возможен благодаря использованию кода VBA: https://docs.google.com/document/d/1JU7G_Tna2zPBtcG2TlarxKCTbuinNsg5LwBqzmuJYK8/edit

1 ответ1

1

Самое простое решение - использовать UDF. (Я даже не уверен, что это возможно с помощью стандартной формулы.)

С таблицей, настроенной так:

Скриншот рабочего листа

Скопируйте и вставьте следующий код в стандартный модуль:

'============================================================================================
' Module     : <any standard module>
' Version    : 0.1.1
' Part       : 1 of 1
' References : (Optional) Microsoft Scripting Runtime   [Scripting]
' Source     : https://superuser.com/a/1332369/763880
'============================================================================================
Option Explicit

Public Function CountDistintMultiSelections _
                ( _
                           count_array As Range _
                ) _
       As Long

  Dim dictSelections As Object                              '##Early Bound## As Scripting.Dictionary
  Set dictSelections = CreateObject("Scripting.Dictionary") '##Early Bound## = New Dictionary

  Dim celCell As Range
  For Each celCell In Intersect(count_array, count_array.Parent.UsedRange)
    Dim varSelections As Variant
    varSelections = Split(celCell.Value2, ", ")
    Dim varSelection As Variant
    For Each varSelection In varSelections
      If dictSelections.Exists(varSelection) Then
        dictSelections(varSelection) = dictSelections(varSelection) + 1
      Else
        dictSelections.Add varSelection, 1
      End If
    Next varSelection
  Next celCell
  CountDistintMultiSelections = dictSelections.Count

End Function


Введите следующую формулу в C2:

=CountDistintMultiSelections(B:B)

Объяснение:

В коде используется функция Split() для разделения отдельных выборок в каждой ячейке и словарь для подсчета уникальных выборок.

Заметки:

Чтобы установить UDF, выполните следующие действия:

  • Нажмите Alt+F11
  • Выберите пункт меню InsertModule
  • Вставьте код в главное окно

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .