Мой пример: в столбце A у меня разные имена.
Пусть они будут в порядке появления, начиная с A1
:
{Joe, Michael, Ana, Victor, Joe, Ana, George, Victor, Chris, George, Joe, Michael, Ana, Victor, Joe, Michael}
Итак, Джо в A1
, Майкл в A2
, Ана в A3
и т. Д.
В столбце B у меня есть значения подмножества, которое я хочу найти в наборе значений имен из столбца A. Пусть это подмножество, начиная с B1, будет:
{Joe, Michael}
Итак, Джо в B1
, а Майкл в B2
.
Я ищу единую формулу, которая:
- Которая не будет использовать вычисления из других ячеек
- Будет подсчитано, сколько раз значения подмножества будут включены в указанном порядке (например, Джо, Майкл ) в столбец A.
В этом примере он должен вернуть значение 3.
При этом мне действительно нужна более общая формула, которая будет работать для любого подмножества, независимо от количества его элементов.
Обратите внимание, что нет информации о максимальном размере подмножества.
Кто-нибудь может предложить формулу?
3 ответа
Следующая формула будет постепенно улучшаться по сравнению с предыдущим ответом, чтобы обрабатывать до четырех имен в Susbet. Я ограничился четырьмя, чтобы избежать длины формулы «воскресная газета».
ЕСЛИ (СЧЁТ (B1: B300) = 2, СУММ (ЕСЛИ (ТОЧНЫЙ (A1: A499 & A2: A500, B $ 1 и B $ 2), 1,0)), ЕСЛИ (СЧЁТ (B1: B300) = 3, СУММ (ЕСЛИ ( ТОЧНО (A1: A499 и A2: A500 и A3: A501, B1, B2 и B3), 1,0)), ЕСЛИ (СЧЁТ (B1: B300) = 4, СУММ (ЕСЛИ (ТОЧНО (A1: A499 и A2: A500 и A3: A501 и A4: A502, B1 и B2 и B3 и B4), 1) , "")), ""))).
Конечно, вы можете лично расширить его, чтобы охватить пять и более подмножеств имен, подняв сначала диапазон «A», а затем диапазон «B».
Поможет другой подход к проблеме. Скопируйте все имена из столбца A в неиспользуемый столбец. Затем перейдите на вкладку «Данные» и используйте «Удалить дубликаты». Отсортируйте эти уникальные значения в алфавитном порядке, скопируйте их, а затем переместите (вставьте) в неиспользуемую строку.
Поместите эту формулу во всю строку, в каждую ячейку сразу под уникальными именами: = RANDBETWEEN (1,1000000). Выделив обе строки, перейдите на вкладку «Формула», затем «Определенные имена» и выберите «Создать из выделенного». Щелкните поле «Верхний ряд».
Столбец A содержит тысячи ваших имен, как вы указали. Введите эту формулу в B1 и заполните: = INDIRECT (A1).
В C3 введите: = IF (AND (EXACT (CONCATENATE (OFFSET (B1,0,0; COUNT (E $ 1: E $ 2000)))), CONCATENATE (OFFSET (E $ 1,0,0, COUNT (E $ 1: E $ 2000) ), 1)))), 1, ""). Столбец D содержит Подмножество значений имени. Введите эту формулу в E1 и скопируйте вниз до точки D (подмножество): = ЕСЛИОШИБКА (КОСВЕННО (D1), ""). Наконец, используйте функцию SUM, размещенную в любом месте, чтобы получить количество значений подмножества в столбце A: = SUM (C: C).
Вот формула массива, которая может вам помочь. Он использует смещение столбца A:
=SUM(IF(EXACT(A1:A499&A2:A500,B$1&B$2),1,0))
, а затем CTRL + SHIFT + ENTER
B1
со значением Joe, Michael
и выполнять эту задачу процедурно.
Похожие вопросы
Новые вопросы
arrays
Массив - это упорядоченная линейная структура данных, состоящая из набора элементов (значений, переменных или ссылок), каждый из которых идентифицируется одним или несколькими индексами. Когда вы спрашиваете о конкретных вариантах массивов, используйте вместо них следующие связанные теги: [vector], [arraylist], [matrix]. При использовании этого тега в вопросе, относящемся к языку программирования, пометьте вопрос используемым языком программирования.
TEXTJOIN()
??