Как точно соответствовать столбцу с помощью QUERY в Google Sheets?

У меня есть некоторые значения в ячейке AA1 как

'SONA'|'SONAKSHI'|'SUMON'|'SUMONA'

Но это дает результат как

SONA'|'SONAKSHI'|'SUMON'|'SUMONA'

Я создал формулу,

=let(cell,indirect($CA$27&"1"), ifs(cell<>"", " AND "&CC27&" MATCHES '.*("&UPPER(cell)&").*' " , cell = "",""))

Это дает результат как

AND Col7 MATCHES '.*(SONA'|'SONAKSHI'|'SUMON'|'SUMONA').*'

' отсутствует в начале. Как это исправить. Пожалуйста, помогите мне.

Мой ожидаемый результат

AND Col7 MATCHES '.*('SONA'|'SONAKSHI'|'SUMON'|'SUMONA').*'

51
3

Ответы:

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

=LET(cell,INDIRECT($CA$27&"1"), IF(cell<>"", " AND "&CC27&" MATCHES '.*("&UPPER(SUBSTITUTE(cell,"'","''"))&").*' ", cell = "",""))

Используя функцию ПОДСТАВИТЬ для замены одинарных кавычек двойными одинарными кавычками (''), вы гарантируете, что одинарные кавычки внутри значений ячеек правильно экранируются. Это должно дать вам ожидаемый результат:

AND Col7 MATCHES '.('SONA'|'SONAKSHI'|'SUMON'|'SUMONA').'

Решено

Мой ожидаемый результат

AND Col7 MATCHES '.*('SONA'|'SONAKSHI'|'SUMON'|'SUMONA').*'

"matches '.*('"& UPPER(cell) &").*'"

пытаться:

=IF(AG1 = "", LET(cell, INDIRECT($CA$27&"1"), 
 IFS(cell<>"", " AND "&CC27&" MATCHES '.*('"& UPPER(cell) &").*' " , cell = "","")), )


Ваша исходная формула не требует изменений и будет работать так, как задумано, если вы измените ведущую (первую) одинарную кавычку ' в Cell_AA1 с помощью дополнительной кавычки как таковой ''SONA'|'SONAKSHI'|'SUMON'|'SUMONA'

  • ведущая (первая) одинарная кавычка предназначена для обработки содержимого ячейки как текста, и именно поэтому косвенная функция не учитывает ее, и в итоге вы получаете SONA'|'SONAKSHI'|'SUMON'|'SUMONA'