У меня есть таблица в Excel, которая часто использует OFFSET
, чтобы получить один столбец относительно другого. Это необходимо, чтобы позволить мне динамически изменять размер таблицы.
Так, например, в ячейке D5
из MyTable
, у меня есть такая формула - где D $ 2 - первая строка таблицы
=INDEX(
OFFSET(
D$2,
0,
(- OffsetDistance ),
ROWS(
MyTable
)
),
MATCH(
LARGE(
OFFSET(
D$2,
0,
(- 1 ),
ROWS(
MyTable
)
),
ROW() -
ROW(
MyTable[#Headers]
)
),
OFFSET(
D$2,
0,
(- 1 ),
ROWS(
MyTable
)
),
0
)
)
Теперь я слышал, что "1009 * медленный, потому что он волатильный". Это все равно что сказать, что RAND()
медленно; генерация случайного числа не медленная, ничто по сравнению с сортировкой списка или поиском подстроки - медлительность заключается в том, что лист часто пересчитывается.
Мне интересно, насколько медленнее использование функции OFFSET, чем Диапазон буквальный. По сути, у меня есть компромисс между гибкостью и возможностью динамического изменения размера моей таблицы по сравнению с более быстрыми жестко закодированными смещениями.
Итак, как правило, сам по себе OFFSET может быть источником медленности на листе ? Я думаю, что нет, потому что я предполагаю, что это операция O(1)
, которая просто добавляет пару чисел вместе. Но я не могу думать, как это количественно оценить