Формула таблицы Google для использования текущей строки в функции

Я хочу рассчитать произведение двух разных столбцов (например, A и B) для каждой строки на моей электронной таблице. Для одной строки это будет работать с помощью =PRODUCT(A1:B1), но я не могу понять, как заставить функцию использовать текущую строку вместо введенной вручную строки. Я знаю, что вы можете получить ссылку на текущую строку, используя ROW(), но я получаю сообщение об ошибке, когда я пытаюсь что-то вроде PRODUCT(AROW():BROW()).

Ответ 1

Если вы скопируете формулу, которую вы указали в другую строку, или заполните ее с помощью Ctrl + D, она автоматически изменит ссылку на строку, которую вы копируете/заполните. Это называется "относительной ссылкой". Если вы используете формулу =PRODUCT($A$1:$B$1), это называется "абсолютной ссылкой", которая не изменится при копировании в другом месте.

Вы также можете использовать следующую формулу в любой строке:

=A:A*B:B

который вернет произведение двух значений в строке, вызываемой формулой.

Ответ 2

Один из способов сделать это - = INDIRECT. Есть несколько способов приблизиться к этому (плюс бонус, ниже):

= INDIRECT, обозначение A1B1

Вариант 1 использует функцию =ROW()=CONCAT для объединения имен столбцов и строк), как вы уже упоминали, и в этом случае может выглядеть так:

=INDIRECT(CONCAT("A", ROW())) * INDIRECT(CONCAT("B", ROW()))

(Примечание: я использую x * y вместо =PRODUCT(x, y), потому что он кажется более читаемым в ответе, учитывая только два фактора.)

Если вы сделали это в строке 3, в качестве формулы было бы эффективно A3 * B3.

= INDIRECT, обозначение R1C1

Вариант 2 с =INDIRECT заключается в использовании "относительной" ссылки, используя то, что называется "обозначением R1C1". К этой нотации обращается переход FALSE к (необязательному) второму параметру =INDIRECT и имеет две основные формы:

  • Ссылаясь на другую ячейку по ее абсолютной позиции, например. R1C1 всегда ссылается на A1 (первая строка, первый столбец), R3C2 всегда ссылается на B3 (третья строка, вторая колонка - обратите внимание, что порядок строк и столбцов отменен из нотации B3), Они сохраняются, когда ссылки появляются на листе (они всегда будут разрешать A1 и B3, соответственно).
  • Позиция относительно текущей ячейки, например, с помощью R[1]C[1], которая указывает строку 1 row down, 1 вправо. В принципе, это одно и то же обозначение, за исключением того, что вы помещаете числа в скобки для ссылки на количество строк и столбцов вдали от текущей ячейки (вниз и вправо для положительных чисел) конкретной ячейкой. Пока R[1]C[1] ссылается на строку 1 row down, 1 справа, R[0]C[-1] будет ссылаться на текущую строку (0 не изменяется), 1 столбец влево (отрицательные числа идут вверх для строки и слева для столбца вместо вместо down и right соответственно).

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

=INDIRECT("R[0]C1", FALSE) * INDIRECT("R[0]C2", FALSE)

Это всегда даст вам то, о чем вы могли бы думать (, но не выразить) как =AROW() * BROW().

(Боковое примечание: я нашел это описание использования =INDIRECT будет полезно в придумывании вышеуказанного.


$A $1 - привязанные ссылки (бонус)

Наконец, вероятно, стоит отметить, что можно ссылаться на фиксированные столбцы и/или строки с помощью модификатора $. Обычно, когда копировать/вставлять формулы в другие ячейки, ссылки на столбцы и строки изменяются в зависимости от количества движения: копирование ссылки на =A1 от C2 до E3 приведет к вам =C2 (А стал C, потому что ссылка переместила два столбца вправо, 1 стала 2, потому что она двигалась вниз по 1 строке). Обозначение $ привязывает одну или обе эти ссылки.

например. если у вас есть ссылка на =$A1 в ячейке C1, а затем скопирована в C2, она станет =$A2. Это очень необычно, потому что =A1 также скопировал бы на =A2. Но если теперь вы скопировали из C2 в D3 (одна строка вниз и один столбец вправо), она станет =$A3, все еще привязанной к столбцу A, и все еще меняет номер строки. Поэтому, если из любого столбца в строке 63 (произвольный пример) вы поместите формулу =$A63 * $B63, вы можете скопировать/вставить ее в любую другую ячейку в электронной таблице и умножить значения в столбцах A и B наклеенной вами строки в. (Что, я думаю, может быть, что вы пытаетесь сделать?)

(Также: обратите внимание, что вы можете сделать то же самое со ссылками на строки - =A$1 всегда строка 1, но A может измениться; =$A$1 всегда будет A1, независимо от того, где вы положили ссылка на него.)