Найти в Дзене

Сворачивание (unpivot) таблички в гугл таблицах

Удобно человеку ≠ удобно для вычислений. И наоборот. Людям часто удобно вводить данные, когда это наглядно, например, при учете рабочего времени по проектам удобно ввести данные за неделю. А один из заказчиков попросил недавно в системе учета времени сделать поквартальный ввод данных:
Ввод данных по дням недели
Работать с такой таблицей достаточно просто и наглядно. По сути, она представляет из

Удобно человеку ≠ удобно для вычислений. И наоборот. Людям часто удобно вводить данные, когда это наглядно, например, при учете рабочего времени по проектам удобно ввести данные за неделю. А один из заказчиков попросил недавно в системе учета времени сделать поквартальный ввод данных:

Работать с такой таблицей достаточно просто и наглядно. По сути, она представляет из себя сводную таблицу (pivot table). Но обрабатывать данные из нее намного сложнее. Гугл таблицы, эксель, впрочем, как и многие базы данных построены вокруг концепции "нормальная форма", и для удобства дальнейшей работы нам нужно "свернуть" (unpivot) эту таблицу, чтобы она была в максимально простом виде: проект - дата - часы:

-2

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

=QUERY(A1:H7;"SELECT A, '"&B1&"', B WHERE B>0")

и объединить все в один массив для последовательного вывода:

={ QUERY(A1:H7;"SELECT A, '"&B1&"', B WHERE B>0"); QUERY(A1:H7;"SELECT A, '"&C1&"', C WHERE C>0"); ... ; QUERY(A1:H7;"SELECT A, '"&H1&"', H WHERE H>0") }

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

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