EXCEL: при перетаскивании ячеек вправо мне нужно использовать информацию, хранящуюся в столбцах, а не в строках (не знаю, как правильно задать это) - PullRequest
0 голосов
/ 18 ноября 2018

Вероятно, это простая проблема, но я даже не знал ключевых слов, чтобы погуглить; /.Допустим, у меня есть эти данные:

enter image description here

Теперь у меня также есть эта маленькая формула:

enter image description here

Если я знаю, перетащите ячейку C вправо, Excel попытается выполнить следующее вычисление:

= 2 + B1

Я хочу, чтобы он попыталсяэтот расчет

= 2 + A2

Конечно, самым простым решением было бы хранить мои исходные данные в одной строке вместо одного столбца, но это действительно неудобно для меня.Спасибо за любую помощь

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

Вы можете использовать метод indirect() для ссылки на ячейку по ее «идентификатору строки», т.е. "A3". При заполнении справа используйте CONCATENATE() и COLUMN() для создания идентификаторов строки {A1,A2,A3,A4,A5...}, как требуется:

=2+INDIRECT(CONCATENATE("A";COLUMN()-2))

Это приведет к следующему:

enter image description here

Side-Node: Если вы хотите это для некоторого x/y -Grid-Generation, вы также можете быть ленивым, и просто вставьте =COLUMN() для каждой ячейки из "A1 - Z1" и ROW() для каждой ячейки из "A2 - A24".

(Или даже вообще избегайте их и напрямую выполняйте фактический расчет, используя column() и row() в качестве замены для вашего х / у.

0 голосов
/ 18 ноября 2018

В общем, если вы хотите, чтобы относительные ссылки перемещались вниз при перетаскивании ячеек вправо, вы можете использовать это:

Вместо:

= 2+A1

Do:

= 2+INDEX($A:$A,COLUMN()+<offset>)

Где <offset> - это любое смещение, которое вам нужно. Смещение будет меняться в зависимости от того, в каком столбце находится начальная формула.

INDEX предпочтительнее, чем INDIRECT, потому что INDIRECT является изменчивым (должен пересчитываться после любого изменения в рабочей книге), но INDEX - нет (пересчитывается только тогда, когда один из входов формулы, в данном случае *) 1016 *, изменения).

0 голосов
/ 18 ноября 2018

Вы можете попробовать использовать комбинацию функций INDIRECT и COLUMN:

=2+INDIRECT("A"&(COLUMN()-2))

. Вы вставите приведенную выше формулу в ячейку C1, а затем перетащите вправо, сколько быстолбцы / строки, которые вы хотите охватить.

Это приведет к следующему:

enter image description here

Это работает, потому что COLUMN()-2 возвращает 1для столбца C, 2 для столбца D и т. д.Поэтому формула будет вызывать INDIRECT для A1, A2 и т. Д. Для столбца C, D и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...