у меня есть эта формула
=IFERROR(VLOOKUP("Actual/Estimated Ship Units Forecast",'WD ALPS'!$A:$K,MATCH(Date1,'WD ALPS'!$A$651:$K$651,0),FALSE),"")
Каждый раз, когда я запускаю макрос для повторного извлечения данных, указанных в этой формуле, Excel изменяет диапазон на единицу. (что портит все мои расчеты.)
Итак, я иду от MATCH(Date1,'WD ALPS'!$A$651:$K$651,0)
к MATCH(Date1,'WD ALPS'!$A$650:$K$650,0)
без причины. Я хочу, чтобы он оставался постоянным независимо от того, что происходит с таблицей данных.
Одна из возможностей — использовать OFFSET. Это изменчивая функция, которая может привести к проблемам со временем отклика, но в небольших масштабах это обычно не проблема.
Вы бы заблокировали OFFSET для ячейки привязки, которая не изменяется макросом, который вы запускаете. В этом случае я предполагаю, что A1 не затронут. Вы можете изменить свою формулу на:
MATCH(Date1,OFFSET('WD ALPS'!$A$1,650,0):OFFSET('WD ALPS'!$A$1,650,10),0)
Другим способом, который не был бы изменчивым и не зависел бы от привязки, было бы использование INDEX таким же образом:
MATCH(Date1,INDEX('WD ALPS'!$1:$1048576,651,1):INDEX('WD ALPS'!$1:$1048576,651,11),0)
Это выбирает весь лист, а затем вырезает нужную часть с абсолютными фиксированными индексами. Недостатком является то, что он оценивает весь лист - я не уверен, что будет работать быстрее.
Ух ты! Супер разочарование! Вы пробовали ИНДЕКС? кстати - у меня была опечатка в INDEX. Я исправлю это сейчас.
Благодарю вас! Использование INDEX работало просто отлично. Мне действительно нужно больше изучить Index/Match. Еще раз, я ценю помощь!
Эй, Марк, спасибо за ответ! Я попытался запустить формулу с добавленным, теперь она редактирует ее, чтобы выдать какую-то справочную ошибку.
MATCH(Date1,OFFSET('WD ALPS'!#REF!,650,0):OFFSET('WD ALPS'!#REF!,650,10)
Интересно, почему он все равно решает редактировать.