Как в формуле QUERY указать динамическое условие из другой ячейки?

Есть проблема с функцией QUERY. Я вывожу данные по такой формуле
=ARRAYFORMULA(IF(A$2:$2<>"";UNIQUE(QUERY(ДАННЫЕ_ВЫДАЧИ;"select C where (E='"&A$2:$2&"' and (D<="&RIGHT($B$1;2)&"))"));""))

тут есть selecte, и есть условия заданные клюзой where. Я хочу что-бы дополнительные формировались в другой ячейке и подгружались в эту формулу.

Например к where (E='"&A$2:$2&"' and (D<="&RIGHT($B$1;2)& "+ условие (к примеру "and A="Яндекс"") "")

Я точно знаю что такая возможность существует, но найти в интернете не могу.

5ec8ebe28afbc456379644.png
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Можно наколдовать формулу, но очень простой скрипт решает проблему более изящно

/**
 * @OnlyCurrentDoc
 */

/**
 *
 * The RAINREPORT function
 *
 * @param {rain} rain Two-column data array
 * @param {boolean} skipEmpty
 * @return {any[][]}
 * @customfunction
 */
function RAINREPORT(rain, skipEmpty = true) {
  const _rain_ = rain.map((row) => row[0]);
  const _cloud_ = rain.map((row) => row[1]);
  const _report_ = {};
  _rain_.forEach((item, i) => {
    if (_cloud_[i] === '' && skipEmpty === true) return;
    if (!Object.prototype.hasOwnProperty.call(_report_, _cloud_[i]))
      _report_[_cloud_[i]] = {
        data: [],
        name: _cloud_[i],
      };
    if (_report_[_cloud_[i]].data.indexOf(item) === -1)
      _report_[_cloud_[i]].data.push(item);
  });
  return Object.keys(_report_)
    .sort()
    .map((key) => [key, ..._report_[key].data.sort()]);
}


Формула

=TRANSPOSE(RAINREPORT(
  QUERY(
    ДАННЫЕ_ВЫДАЧИ;
    "select C,E where " & 
      TEXTJOIN(" and ";1;IF(A1="ВСЕГО";"";"A='" & A1 & "'");"D < " & REGEXEXTRACT(B1;"\d+")))
))


5ececdc15be78089156754.png

Таблица с примером https://docs.google.com/spreadsheets/d/11Fp2Tx8BGX...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы