Как скопировать формулу Excel без удаления логики

2

У меня есть таблица, которую я пытаюсь сохранить динамической, используя следующую логику:

Cell D500  -  "=D18*D19"
Cell D501  -  "=D20*D21"
Cell D502  -  "=D22*D23"
...

Мне нужно поддерживать динамику как строки, так и столбца, поскольку я буду копировать это в столбцы с E по SV (~ 500 столбцов), но я не могу найти хороший способ скопировать это вниз без увеличения значения строки на 1, а не на 2, или с любым видом нежелательного поведения.

Есть ли хороший способ сделать это?

Адам Рид
источник

Ответы:

4

Вы не можете использовать простые ссылки, чтобы сделать это. Вам нужно использовать INDEX()функцию для каждой ссылки следующим образом:

=INDEX(D:D,18+(ROW()-500)*2)*INDEX(D:D,18+(ROW()-500)*2+1)
robinCTS
источник
Проще, чем мой INT()/ INDIRECTкомбо! Хороший
Пико
@piko Золотое правило - никогда не использовать INDIRECT()(или OFFSET()), поскольку они изменчивы и могут вызвать замедление работы в больших электронных таблицах. Это хорошая привычка, даже для простых формул и небольших таблиц. Плюс в большинстве случаев формула проще в использовании INDIRECT()(и, как правило, это сопряжение MATCH()).
robinCTS
1
Удивительно - спасибо Робин и Пико! Я использовал OFFSET с большими таблицами для динамического выравнивания 2D-таблиц, и это действительно замедляет процесс. Отличное решение!
Адам Рид,
К сожалению. Последнее INDIRECT()в моем предыдущем комментарии должно было быть INDEX()!
robinCTS
Сделал небольшое изменение в формуле, так как * 2 заставил строки немного подскочить, используя приведенное ниже, но теперь это работает как шарм! = ИНДЕКС (D: D, 18 + СТРОКА () - 519 + СТРОКА (1: 1)) * ИНДЕКС (D: D, 18 + СТРОКА () - 519 + СТРОКА (2: 2))
Адам Рид
1

Другое решение, использующее INT()функцию:

=INDIRECT(ADDRESS(INT((ROW()-500)*2)+18,4))*INDIRECT(ADDRESS(INT((ROW()-500)*2)+19,4))

Есть несколько параметров:

  • 500: это номер, с которого начинается ваша формула, в вашем случае это ячейка D500
  • 4: это номер столбца (ячейка D500 находится в 4-м столбце)
  • 2: это число умножений. Если вы хотите умножить 3 элемента ( D18*D19*D20), вам нужно будет использовать 3вместо этого.
  • 18/ 19: это первая и вторая строка ваших расчетов.

Я приглашаю вас воспользоваться кнопкой «Оценить» на вкладке «Формула», чтобы посмотреть, как она работает, шаг за шагом.

Piko
источник