2013-09-26 18 views
25

Итак, у меня есть форма Google, которая выгружает информацию в электронную таблицу. На каждой строке мне нужно сделать простой расчет. Проблема в том, что я не могу понять, как заставить ее повторять формулу на каждой новой строке по мере добавления новых строк.Сделайте формулу таблицы электронных таблиц Google бесконечно

Да, я знаю, как использовать дескриптор заполнения для копирования формул вниз, а что нет, но я хочу, чтобы он автоматически добавлял формулу вместо меня, вручную копируя ее.

Например, это используется для отслеживания времени, так что есть ячейка для In Time и ячейка для Out Time на каждой строке. Я хочу иметь столбец Затраченное время, которое будет вычитать их вовремя из времени, чтобы определить, сколько времени они потратили. Но поскольку существует бесконечное количество строк, для меня нецелесообразно входить и копировать формулу.

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

ответ

45

Давайте скажем In Time клетки находятся в колонке А, и Out Time клетки находятся в колонке B, и вы хотите время нахождения быть в колонке C. Положите эту формулу в ячейке С2 (предполагая, что A1, B1 и C1 содержат заголовки, а не данные):

=ARRAYFORMULA(B2:B - A2:A) 

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

+2

Спасибо так много, что это именно то, что мне было нужно. Я искал это уже несколько месяцев и не мог найти прямой ответ. Еще один вопрос, так как синтаксис Array Formula по-прежнему немного меня раскручивает, как я могу реализовать там оператор if.Например, я хотел бы получить что-то вроде IF (B2 = «?», «?», B2-A2) – slister

+3

Не обращайте внимания на это: ARRAYFORMULA (IF (F2: F = "?", "?", F2: F - E2: E)) Большое спасибо за то, что указали мне в правильном направлении. – slister

+0

@Brionius как я могу применить формулу HTTPResponse для всего столбца для старых и новых данных? arrayformula не будет работать = HTTPResponse! , Я не хочу копировать формулу вручную для всего столбца! – user1788736

5

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

E.g. если у вас есть цифры в колонках А и В, и формулу, чтобы добавить их вместе:

=query(Data!A:B, "select A, B, A + B") 

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

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

=query({Data!A:B, arrayformula(Data!A:A+Data!B:B)}, 
    "select Col1, Col2, Col3") 

Обратите внимание, как столбцы больше не упоминается в письме, но Col1, Col2 и т.д.

+0

Спасибо за трюк запроса @Tmdean, который это хорошо знать. – slister

Смежные вопросы