4

Чтобы упростить задачу, скажем, у меня есть лист Excel, который имеет разные числовые значения в ячейках от A1 до B100 (два столбца на 100 строк). В столбце C я хотел бы иметь формулу, которая будет умножать числа в A и B для этой же строки.

Старый способ, которым я использовал для написания формулы - покупка, входящая в C1 =A1*B1 а затем копирование формулы до C100. Это сработало замечательно, но не очень надежно, потому что если кто-то перемещается по ячейкам в столбцах А или В, то формулы будут отслеживать новое местоположение и портить ситуацию.

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

Давайте предположим, что теперь я хочу создать новое вычисляемое значение в столбце D (например, значение в A для той же строки + значение в столбце A в предыдущей строке), чтобы формула в D1 была =A1 . Формула в D2 будет иметь вид =A1+A2 и эта формула будет затем скопирована в столбец D. Это не такой надежный способ, есть ли более надежный способ сделать это так, чтобы он был защищен от перемещения исходных ячеек (как мой первый пример).

Спасибо заранее

4 ответа4

6

Лучшим вариантом будет использование именованных диапазонов: именованный диапазон может быть относительно введенной ячейки. Например, если вы выберете ячейку A2 и вставите имя _CellAbove with the formula = A1 (without the $ `, которые автоматически вставляются!), Вы можете использовать CellAbove в любой ячейке, чтобы сослаться на ячейку над ячейкой с формулой.

Поэтому для вашего примера выберите ячейку D2 и вставьте два имени (используя менеджер имен): * ColA: =$A2 * ColA_above: =$A1

Затем используйте =ColA+ColA_above в качестве формулы в D2 и скопируйте ее вниз. (Используйте =ColA в D1).

Это всегда вернёт вам правильный результат - и будет нестабильным, что действительно удобно в больших вычислениях!

Дополнительное примечание: для вашего первого примера с умножением я бы рекомендовал просто преобразовать ваши данные в таблицу Excel (вкладка Вставка -> Таблица. Тогда вместо столбцов A и B вас будут столбцы, скажем, « Price и Quantity и вместо =A1*B1 вы получите =[@Price]*[@Quantity] при вводе формулы (так же, как обычно Excel будет размещать эти имена, не нужно беспокоиться об этом). Теперь, даже если вы измените структуру листа, формулы будут работать!

1

Попробуй это

=INDIRECT("RC1",0)+INDIRECT("R[-1]C1",0)

Обратите внимание, у этого есть недостаток того, чтобы быть Volitile

0

Или это :

=SUMPRODUCT(A1:A100+A2:A101)

Надеюсь, я вас правильно понял ... :)

0

Попробуй это:

=IF(ROW()=1,OFFSET(B1,0,-1),OFFSET(B1,-1,-1)+OFFSET(B1,0,-1))

Единственная ячейка, на которую она ссылается, сама по себе, поэтому она изменит эту ссылку, только если она будет перемещена, и в любом случае это не будет иметь значения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .