Получить все результаты строк с соответствующими критериями из диапазона - PullRequest
1 голос
/ 28 мая 2019

Как уже упоминалось в другом вопросе, я нахожусь на нескольких серверах Discord, которые позволяют игрокам выставлять на аукцион игровой контент для торговли.Используйте листы для отслеживания моих собственных аукционов, я копирую тег (имя # xxxx) и ID (длинный номер) в список, чтобы отфильтровать любого, кто не сможет выполнить свой выигрышный аукцион.

То, что я сейчас собираюсь сделать, это в два раза.

Во-первых, это автоматический список дублирующихся идентификаторов, имеющих разные теги (кто-то изменил свое имя).В списке будет показан идентификационный номер в одной ячейке, а затем в следующей ячейке будут показаны все использованные ими теги (для облегчения чтения используйте textJoin() и sort()).

Второйсостоит в том, чтобы получить список использованных тегов на основе отдельного списка идентификаторов (известный список пользователей, которые не смогли выполнить его).

Я пробовал и потерпел неудачу с vlookup(), filter(), query() и обычный lookup().Когда я пытался filter() использовать список, кажется, что он смотрит только на первый элемент, но ничего после этого игнорирует.Если я попытаюсь увеличить длину списка (вместо F2 я делаю его F2:F) он станет красным и не будет работать.

Используя условное форматирование, я смогу получить дубликаты длявыделить в пределах диапазона.Тем не менее, я пытаюсь сделать еще один шаг и найти совпадения.Вроде как автоматическая система фильтров для отображения известных дубликатов.

О чем я тут не думаю?

Редактировать: Вот некоторая фиктивная информация, чтобы дать идею ...

Alred         970192322624802134
Barry         493288047120884104
Clark         648567312202297155
Dick          336368714780211631
Enigma        513446866409315771
Flash         493288047120884104
Green Arrow   382294342593163268
Harley        894386762337961412
Ivy           192571739320652789
Jimmy         662344040550649441
Krypto        944264752128564134
Lois          608531705193876711
Mera          461451144314768165
Nyssa         533348352505340666
Oliver        382294342593163268
Perry         877529730964781752
Robin         336368714780211631
Superman      648567312202297155
Thomas        969367121152160055

Очевидно, что имена будут иметь знак #, за которым следует 4-значный номер, но это не имеет значения для этого вопроса.

Глядя на список, вы можете увидеть, что некоторые из идентификаторов (столбецчисел) одинаковы, но с разными именами.

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

Пример:

648567312202297155   Clark, Superman
336368714780211631   Dick, Robin
382294342593163268   Green Arrow, Oliver
etc

Для второго списка идентификаторов, где совпадающие идентификаторы будут отображать все совпадающие имена.Вроде как, если только перечисленные выше идентификаторы имеют более одной записи, а затем этот список должен использоваться для поиска имен, за исключением того, что список идентификаторов может быть создан другими способами.Чтобы разбить его на две упрощенные задачи ... Один находит повторяющиеся идентификаторы и просто перечисляет эти идентификаторы (по одному разу), затем другой просматривает эти идентификаторы и перечисляет все соответствующие записи (то есть имена).

Изменить: Эта ссылка является примером того, что я пытаюсь сделать, но это не работает для меня. Google Sheet Query - Группировать / объединять несколько строк

У меня есть A (A2: A) = Имена / тег, B (B2: B) = ID, F (F2: F) =Идентификаторы для фильтрации.Когда я пытаюсь =join(",",filter(A:A,B:B=F2)), он возвращает первую запись, но затем останавливается.

Кроме того, когда я пытаюсь смоделировать другую страницу (значения и формулы), он возвращает только результаты для Билла (красный, синий, желтый).), но не для Сары.

Под симуляцией я подразумеваю, что я добавил пустой лист и заполнил значения и формулы, как показано на рисунке.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Решение объединяет функции TEXTJOIN с ARRAYFORMULA. Учитывая ваши примеры данных, вы можете создать список уникальных идентификаторов пользователей с формулой UNIQUE. Таким образом, ячейка D1 имеет =UNIQUE($B$1:$B$19). Это заполняет данные в столбце D.

Формула в столбце E затем сопоставляет каждый из уникальных идентификаторов пользователя в столбце B с любым из имен в столбце A, используя ARRAYFORMULA, чтобы вернуть все имена, а затем объединяет список имен, используя TEXTJOIN. Формула в столбце E:

=TEXTJOIN(",",true,arrayformula(if($D7=$B$1:$B$19,$A$1:$A$19,"")))

enter image description here

0 голосов
/ 28 мая 2019

Если я правильно понимаю вашу проблему, вы пытаетесь сопоставить имя пользователя с диапазоном имен пользователей в столбце, чтобы проверить, соответствует ли оно.

Один из способов сделать это - использоватьсовпадение в запросе, например:

=QUERY("Charleston!A2:H"," where Col6 matches '" & join("|", A2:A246) & "' Order By Col8")

Если это не помогло, пожалуйста, предоставьте нам некоторые варианты использования и ваш код, если можете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...