Косвенная ссылка Excel выдает ошибку #ref

#excel #vba #ref

#excel #vba #ссылка

Вопрос:

Я пытаюсь динамически ссылаться на ячейку на другом открытом и видимом листе в той же книге, используя КОСВЕННУЮ функцию. Когда я делаю ссылку на ячейку со статическим значением, она работает нормально, но не работает, если ссылка не является статической. В приведенном ниже фрагменте кода $ A $ 31 — это имя листа, F9 — ссылка на ячейку для этого листа. Это работает нормально. Однако это F9, который должен быть динамическим, например, G9, H9 и F10, F11.

 =INDIRECT("'" amp; $A$31 amp; "'!F9")
 

Я бы подумал, что следующий фрагмент должен был внести изменения. Однако это приводит только к ошибке #REF

 =INDIRECT("'" amp; $A$31 amp; "'!" amp; F9)
 

Какие изменения мне нужно внести и почему я получаю ошибку?

Комментарии:

1. сначала запишите ту же формулу внутри indirect в другую ячейку и посмотрите, получите ли вы действительный адрес или нет. Нравится ="'" amp; $A$31 amp; "'!" amp; F9

2. Удаление КОСВЕННОГО я в конечном итоге получаю объединенную строку имени листа из $ A $ 31 и любое значение в F9 в текущем активном листе

3. =INDIRECT("'" amp; $A$31 amp; "'!" amp; F9) это должно сработать. Проверьте и дважды проверьте имя вашего листа и ссылочную ячейку.

4. Ваша последняя попытка отлично работает для меня. Я получаю ошибку #REF, если лист в A31 не существует. Однако рассмотрите возможность использования КОСВЕННОГО (АДРЕСНОГО)).

5. Как я уже сказал, первая версия работает нормально. Но изоляция F9, как во втором случае, этого не делает. Имя ссылки на лист явно работает. Это варианты, которые я пробовал в их собственной ячейке одновременно, с последующими буквальными результатами 1) =INDIRECT(«‘» amp; $ A $ 31 amp; «‘!F9») = 2, работает нормально 2) =INDIRECT(«‘» amp; $ A $ 31 amp; «‘!» amp; F9) = #ССЫЛКА! 3) = ОБЪЕДИНИТЬ («‘», $ A $ 31, «‘!», F9) = ‘Sheet1’!y, не нормально (y находится в этой ячейке) 4) = КОСВЕННЫЙ (ОБЪЕДИНИТЬ («‘» amp; $ A $ 31 amp; «‘!», F9)) = #ССЫЛКА! 5) =»‘» amp; $ A $31 amp; «‘!F9» = ‘Лист1’!F9

Ответ №1:

Я нашел ответ. Я уверен, как работает код, но разберусь с этим позже. Часть ссылки на динамическую ячейку необходимо изменить с: amp; F9 на: amp; CELL(«адрес», F9). «адрес», похоже, является ключевой фразой

 =INDIRECT("'" amp; $A$31 amp; "'!" amp; CELL("address",F9))