Я хочу рассчитать произведение двух разных столбцов (например, 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], которая указывает строку1row down,1вправо. В принципе, это одно и то же обозначение, за исключением того, что вы помещаете числа в скобки для ссылки на количество строк и столбцов вдали от текущей ячейки (вниз и вправо для положительных чисел) конкретной ячейкой. ПокаR[1]C[1]ссылается на строку1row 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, независимо от того, где вы положили ссылка на него.)