Я пытаюсь рассчитать нагрузку на подъемный мост при его повороте из закрытого в открытое положение с помощью 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, чтобы лучше понять результат.