2016-08-04 6 views
1

Приветствия Stack Overflow denizens!Формула Excel: использование INDIRECT для получения номера строки с именованным диапазоном вызывает #VALUE! error

У меня возникла проблема с попыткой получить формулу, в которой INDIRECT ведет себя в сочетании с INDEX. Когда я использую определенные значения строк, массив работает нормально, но когда я пытаюсь использовать INDIRECT для получения текущего номера строки, я получаю #VALUE! ошибка.

Например: у меня есть это в ячейке R108, и она работает, как он должен:

=IF(OR(ISERROR(INDEX(MODEL,SMALL(IF(OWNERID=N108,ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1))),N108=""),"",INDEX(MODEL,SMALL(IF(OWNERID=N108,ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1))) 

N108 относится к значению, который согласован с OwnerId, который представляет собой именованный диапазон на другой лист в том же Учебное пособие.

Но что я хочу сделать, это для формулы для ссылки на ту же строку, что он находится на, так это то, что я хочу работать:

=IF(OR(ISERROR(INDEX(MODEL,SMALL(IF(OWNERID=INDIRECT("N"&ROW()),ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1))),INDIRECT("N"&ROW())=""),"",INDEX(MODEL,SMALL(IF(OWNERID=INDIRECT("N"&ROW()),ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1))) 

Упомянем для ясности; на одном листе у меня есть список компьютерной информации, которая имеет два именованных диапазона: MODEL и OWNERID Поскольку формула представляет собой массив, я помню CTRL + SHIFT + ENTER.

Что мне не хватает, что приводит к тому, что INDIRECT не предоставляет мне номер строки для справочных целей? Насколько я могу судить, это просто не нравится тот факт, что его используют как часть поиска по именованному диапазону.

Спасибо заранее!

С уважением, Dylan.

ответ

1

Это известное поведение INDIRECT в контексте массива. Поскольку INDIRECT вернет ссылку, а не значение, то контекст массива, похоже, не сможет получить значение из этой ссылки. Возможно, это также вызвано изменчивым поведением INDIRECT.

Простой пример:

enter image description here

Формулы:

D1 = {=SUM(IF(A1:A10=INDIRECT("A"&{3,5,7}),B1:B10))}

D3 = {=SUM(IF(A1:A10=N(INDIRECT("A"&{3,5,7})),B1:B10))}

D5 = {=SUM(IF(A1:A10=T(INDIRECT("A"&{3,5,7})),B1:B10))}

Как вы видите, если INDIRECT обернут в пределах N, он работает должным образом.

Но для этого мы должны знать, являются ли значения числовыми или текстовыми. Если это текстовое значение, например Z1, Z2, Z3, ... , Z10 в столбце A, то вместо N необходимо использовать T.

+0

Спасибо Axel за ваш ответ! Это, безусловно, решило мою проблему, OWNERID является текстовым, и поэтому префикс «Т» действительно решил проблему. Я даже не знал о существовании этого параметра, так что спасибо за то, что я просветил меня! – Dshore87

+0

@ Dshore87: Добро пожаловать! Но чтобы быть ясным: 'N()' и 'T()' являются функциями, а не параметрами. –