Синтаксис QUERY с использованием ссылки на ячейку

У меня проблемы с вычислением довольно простого запроса QUERY в таблицах Google. Я пытаюсь использовать ссылку на ячейку вместо статических значений, и у меня возникают проблемы. Под ним - код, который я использую, но все время получаю «Ошибка: ошибка анализа формулы».

=QUERY(Responses!B1:I, "Select B where G contains"& $B1 &)

Я уверен, что это простая ошибка, но может ли кто-нибудь показать мне, как написать приведенное выше, чтобы QUERY извлекал данные из B, где G содержит значение в ячейке B1 (ссылка на ячейку)?


person Mr. B    schedule 02.05.2014    source источник


Ответы (8)


У меня есть только обходной путь. В этом особом случае я бы использовал функцию FILTER вместо QUERY:

=FILTER(Responses!B:B,Responses!G:G=B1)

Предполагается, что ваши данные находятся на листе «Ответы», но ваше условие (ссылка на ячейку) находится в ячейке B1 фактического листа.

Надеюсь, это поможет.

ОБНОВИТЬ:

После некоторого поиска исходного вопроса: проблема с вашей формулой определенно является вторым знаком &, который предполагает, что вы хотите добавить что-то еще к своему выражению WHERE. Попробуй убрать. Если по-прежнему не работает, попробуйте следующее:

=QUERY(Responses!B1:I, "Select B where G matches '^.\*($" & B1 & ").\*$'") - Я не пробовал, но помог в другом сообщении: Запрос с диапазоном значений для предложения WHERE?

person zolley    schedule 02.05.2014
comment
Ваш ответ принес мне желаемый результат, СПАСИБО! Для всех остальных меня все еще интересует, как правильно написать оператор запроса выше, используя ссылку на ячейку. Спасибо всем! - person Mr. B; 02.05.2014
comment
Спасибо, Золлей! Ваш оригинальный отфильтрованный ответ помог мне сделать то, что мне нужно было сделать, и научил чему-то НОВОМУ, СПАСИБО! Pnuts опубликовал здесь следующее: webapps.stackexchange.com/questions/60221/ и отлично работает. =QUERY(Responses!$B1:$I, "Select B where G contains '"&B1&"'") - person Mr. B; 03.05.2014

Скопировано из веб-приложений:

=QUERY(Responses!B1:I, "Select B where G contains '"&$B1&"'")
person pnuts    schedule 22.05.2014
comment
одинарные кавычки не требуются - person Francisco Cortes; 11.07.2018
comment
Одиночные кавычки необходимы, если указанная ячейка содержит пробелы. - person Chirimorin; 04.02.2019

Я знаю, что это старый поток, но у меня был тот же вопрос, что и у OP, и я нашел ответ:

Вы почти у цели, способ включения ссылок на ячейки в язык запросов - это обернуть все это речевыми метками. Поскольку весь запрос написан речевыми знаками, вам нужно будет чередовать 'и ", как показано ниже.

Вам понадобится следующее:

=QUERY(Responses!B1:I, "Select B where G contains '"& B1 &"' ")

Если вы затем захотите сослаться на несколько ячеек, вы можете добавить что-то вроде этого

=QUERY(Responses!B1:I, "Select B where G contains '"& B1 &"' and G contains '"& B2 &"' ")

Вышеупомянутое будет дополнительно отфильтровать ваши результаты на основе содержимого B1 и B2.

person Ben Currer    schedule 11.10.2016

Я обнаружил, что одинарная кавычка> двойная кавычка>, заключенная в амперсанды, действительно работает. Итак, для меня это выглядит так:

=QUERY('Youth Conference Registration'!C:Y,"select C where Y = '"&A1&"'", 0)
person cjmcqueen    schedule 15.07.2018

ни один из приведенных выше ответов не помог мне. Этот сделал:

= ЗАПРОС (Копировать! A1: AP, "выберите AP, E, F, AO, где AP =" & E1 & "", 1)

person Martin    schedule 04.05.2018
comment
Кажется, что последнее процитированное пространство - это то, что для меня имело значение ... - person ptim; 26.02.2019

Чтобы он работал как с текстом, так и с числами:

Точное соответствие:

=query(D:E,"select * where D like '"&C1&"'", 0)

Преобразование строки поиска в нижний регистр:

=query(D:E,"select * where D like lower('"&C1&"')", 0)

Преобразовать в нижний регистр и содержать часть строки поиска:

=query(D:E,"select * where D like lower('%"&C1&"%')", 0)

введите описание изображения здесь

A1 = запрос / формула
желтый / A: B = область результатов
зеленый / C1 = область поиска
синий / D: E = область данных

Если вы получаете сообщение об ошибке при вводе текста, а не чисел; переместите данные и удалите (теперь пустые) столбцы. Затем переместите данные обратно.

person Punnerud    schedule 16.09.2020

Вот рабочий код: =QUERY(Sheet1!$A1:$B581, "select B where A = '"&A1&"'")

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

person SharpBCD    schedule 04.10.2020

Старая тема, но я нашел это на пути к приведенному ниже ответу и решил, что кому-то это тоже может понадобиться.

=IFERROR(ArrayFormula(query(index(Sheet3!A:C&""),"select* Where Col1="""&B1&""" ")), ARRAYFORMULA({"*     *","no cells","match"}));

Вот простой текстовый фильтр из набора данных из 3 столбцов (A, B и C), расположенный в "sheet3" в текущем листе и вызывающий сравнение с ячейкой из текущего листа для фильтрации в пределах Col1(A).

Этот бит предназначен только для того, чтобы избавиться от #N/A ошибки, если фильтр не дает результатов //ARRAYFORMULA({"* *","no cells","match"}))

person Eric Boal    schedule 28.07.2016