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