Предположим, у меня есть несколько имен в ячейках B1:B3
и полный список всех имен A1:A4
, могу ли я сгенерировать список имен A1:A4
, которых нет в B1:B3
?
Например, ячейки A1:A4
имеют «A», «B», «C», «D», если B1:B3
содержат «A», «C», «D», то я хочу получить «B».
Я просмотрел список функций, но не мог понять, как это сделать.
Обновление : с помощью Ланса, формула, которую я придумал, была:
FILTER(A1:A4, A1:A4<>B1, A1:A4<>B2, A1:A4<>B3)
Это дает правильный результат, однако у меня все еще есть проблема. Проблема в том, что мои клетки B1:Bx
могут расширяться. Я управляю спортивной командой и использую форму Google Docs, чтобы люди могли отправлять их, они выбирают свое имя из списка выбора и выбирают переключатель «Да» (я могу играть) или «Нет» (меня нет). Чего я хочу достичь, так это отобразить в своей таблице тех людей, которые не ответили. Цель состоит в том, чтобы обновлять этот список автоматически после каждой новой отправки. К сожалению, когда в таблицу добавляются новые строки, формула будет испорчена. Я не уверен, есть ли решение для этого.
Обновление 2 : я нашел обходной путь. Я сначала скопировал клетки B1:Bx
в другой регион C1:Cx
, затем использовал приведенную выше формулу, но против C1:Cx
. Теперь даже B1:Bx
расширяется, формула остается в силе.
источник
Ответы:
ВАУ, я собирался дать вам точное решение, Google Docs очень расстраивает. Скрипт-петля Город.
Вы можете сделать это с помощью функции рабочего листа FILTER, где ваш arrayCondition_1 является формулой функций, которая дает истинное значение для каждой строки, которая не дублируется. Я смог увидеть, что функция MATCH не может быть использована.
источник
COUNTIF
подсчитывает, сколько раз каждый игрок в колонкеA
появляется в колонкеB
и возвращает массив отсчетов.NOT
преобразует числа в логические значения (true или false), а затем принимает обратное значение.FILTER
удаляет игроков, которые появились вB
списке ответов колонки.Хитрость здесь в том, что
NOT
это делает счет логическим. Если игрок не ответил, они появятся 0 раз в списке ответов. Если они ответили, они появятся 1 или более раз (возможно, игрок пытается изменить свой ответ, отправив опрос во второй раз). 0 приводит кFalse
и все остальные числа приводятся кTrue
. Таким образом, игроки, которые ответили на карту,True
и те, кто еще не ответил на картуFalse
.NOT
затем принимает обратное, давая вам маску тех игроков, которые еще не ответили.Это решение поддерживает растущий список представлений, которые могут содержать пустые строки или повторяющиеся представления. Чтобы ограничить конкретным диапазоном, описанным в вопросе, используйте:
=FILTER(A1:A4, NOT(COUNTIF(B:B,A1:A4)))
источник
Вот таблица, показывающая, как это можно легко сделать:
Задать операции в Google Sheets
Союз
={setA; setB}
Разница
=filter(setA, iferror(MATCH(setA, setB, false)))
Пересечение
=filter(setA; MATCH(setA, setB, false))
Пояснения
setA
иsetB
могут быть именованные диапазоны или вы можете использовать обычные обозначения диапазона. Именованные диапазоны только делают это более понятным.Union - это просто новый диапазон, созданный путем сопоставления обоих диапазонов.
Пересечения (следующий простые) зависят от того, ищем индексы
setA
вsetB
котором они выходят, и фильтрации узнающего этим.Разница похожа, но фильтры
setA
выбирают только те элементы, для которыхsetB
не найден индекс .Дополнительный кредит
Объединение с удалением дубликатов это просто setA + (setB-setA) , так что по
источник