Как выполнить простую операцию набора в электронной таблице документов Google?


10

Предположим, у меня есть несколько имен в ячейках 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расширяется, формула остается в силе.


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

@Lance, я нашел обходной путь и снова обновил свой пост. Спасибо.
Grokus

1
Отличный вопрос, я нашел его, когда искал этот ответ сам. Ваш обходной путь довольно хорош, но я думаю, что наконец-то получил именно то, что вы искали. Проверьте мой ответ ниже.
Энтони ДиСанти

Ответы:


5

ВАУ, я собирался дать вам точное решение, Google Docs очень расстраивает. Скрипт-петля Город.

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


1
Я обнаружил, что использование Chrome намного лучше при работе с Google Docs.
Грокус

Сегодняшний день для меня безумен, но, если я себя помню, на следующей неделе пойду на пробел (если к тому времени ответ еще не найден).
Ланс Робертс

все в порядке, я смог использовать фильтр, чтобы получить результаты, которые я хотел. Спасибо.
Грокус

@grokus, отлично, вы должны опубликовать формулу, которую вы использовали для справки будущего читателя.
Ланс Робертс

Я обновил свой оригинальный пост.
Грокус

4
=FILTER(A:A, NOT(COUNTIF(B:B, A:A)))

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)))


гений 20charlimit
Fadeway

0

Вот таблица, показывающая, как это можно легко сделать:

Задать операции в 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) , так что по

={setA;filter(setB, iserror(MATCH(setB,setA,false)))}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.