• Как в функцию QUERY добавить новые Col?

    @kishkin
    P - это колонка за горизонтом, то есть буква, которая будет у самой правой колонки, если добавить ещё одну. У вас последняя имеющаяся - O. Поэтому следующая - P.

    =QUERY(
      ARRAYFORMULA(
        {
          QUERY(
            FLATTEN(IFERROR(SPLIT('Данные'!B:B, ", ", 0))),
            "WHERE Col1 IS NOT NULL",
            0
          ),
          VLOOKUP(
            QUERY(
              FLATTEN(IF(IFERROR(SPLIT('Данные'!B:B, ", ", 0)) = "",, ROW('Данные'!A:A))),
              "WHERE Col1 IS NOT NULL",
              0
            ),
            {
              ROW('Данные'!A:A),
              'Данные'!A:A,
              'Данные'!C:P
            },
            SEQUENCE(1, COLUMNS('Данные'!C:P) + 1, 2),
            0
          )
        }
      ),
        "SELECT Col2, Col1, Col" & JOIN(", Col", SEQUENCE(1, COLUMNS('Данные'!C:P), 3)) & "
         FORMAT Col2 'yyyy-mm-dd hh:mm:ss'",
      1
    )
    Ответ написан
    Комментировать
  • Как в функцию QUERY добавить новые Col?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Обновите до

    =ARRAYFORMULA(QUERY((
      {
        QUERY(
          FLATTEN(IFERROR(SPLIT('Данные'!B:B, ", ", 0))),
          "WHERE Col1 IS NOT NULL",
          0
        ),
        VLOOKUP(
          QUERY(
            FLATTEN(IF(IFERROR(SPLIT('Данные'!B:B, ", ", 0)) = "",, ROW('Данные'!A:A))),
            "WHERE Col1 IS NOT NULL",
            0
          ),
          {
            ROW('Данные'!A:A),
            'Данные'!A:A,
            'Данные'!C:P
          },
          COLUMN('Данные'!B:P),
          0
        )
      }),
      "SELECT Col2, Col1, Col" & JOIN(", Col", COLUMN('Данные'!C:P)) & "
      FORMAT Col2 'yyyy-mm-dd hh:mm:ss'",
      1
    ))
    Ответ написан
    Комментировать
  • Как разделить данные ячейки, перечисленные через запятую, и перенести на другой лист? Как это автоматизировать?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Я рекомендую скрипт.

    В общем-то, эту задачу можно решить и формулами, но "перенести" тут будет условное, только по ссылке, т.е. данные могут "плавать", и с этим придется как-то бороться.

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

    5fc9046ab40da210800326.png

    Далее, уже на другом листе, вы создаете массив из массивов всех вариантов и фильтруете его. Количество массивов зависит от числа уникальных значений, которые можно получить, если перебрать все значения в ячейках для разбития. И это самая трудная задача. Если у вас 20 и более значений, то формула может приобрести чудовищные размеры. В данном случае значений всего три "Яблоки, Груши, Сливы".

    5fc904fbd90fc820384161.png

    Таблица с примером https://docs.google.com/spreadsheets/d/1hmbgD-nW7w...
    Ответ написан
    Комментировать