Я пытаюсь рассчитать нагрузку на подъемный мост при его повороте из закрытого в открытое положение с помощью Excel 2013. Это делается на нескольких листах, где, например, один лист вычисляет движение центра тяжести, а другой - ветровую нагрузку. Все это делается в таблицах, которые выглядят так:

[Time]    [Angle]    [Wind velocity]    [Wind load]
   0         0             5                 0  
   1         0.5           5                 3       
   2         1.0           5.1               6.3
   3         1.5           5.2               9.6

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

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

=INDEX(Angle;1)*INDEX(Surface_Area;1)*INDEX(Wind_Velocity;1)

(не берите в голову формулу, только придумал это для этого примера, поскольку реальный довольно сложный)

В приведенном выше примере «Surface_Area» рассчитывается на другом листе.

Если я хочу вычислить последующие строки таблицы, я обычно выбираю верхнюю ячейку таблицы и использую опцию Автозаполнение, чтобы «потянуть» ячейку вниз и заполнить оставшуюся часть таблицы. Однако аргумент в функции INDEX не позволяет этого, он остается равным 1. Как этого добиться, чтобы при помощи Getformula код по-прежнему был легок для понимания?

Примечание: используя VBA, я попытаюсь удалить часть 'INDEX' из результата Getformula, чтобы лучше понять результат.

0