2014-12-04 2 views
0

У меня есть проблема с ROW() в формуле массива в Excel 2013.Excel, формул массива, N/A за пределами диапазона, и СТРОКА()

Пример:

я сделать именованный диапазон , называемый «вход», скажем, 4 ячейки в ширину и 10 высоко. Затем я делаю формулу массива =ROW(input) с одной ячейкой шириной, высотой 15 ячеек.

Я получаю 10 чисел - первая - первая строка ввода, а остальные подсчитываются от нее, а затем следуют 5 # N/A. Это так и должно быть.

Если вместо =ROW(input) Стараюсь один из следующих действий:

=IFERROR(ROW(input),"x") 

или

=IF(ISNA(ROW(input)),"x",ROW(input)) 

поймать # N/Как то, что я ожидал увидеть это десять цифр, а затем пять Икс. Вместо этого я все еще вижу десять чисел, а затем пять # N/As.

Может ли кто-нибудь сказать мне, как решить эту проблему? Я хочу получить десять чисел, а затем пять x.

И имеет меньшее значение, но только для любопытства (или в случае, если оно возникает в другом случае), почему это происходит?

Почему я хочу это сделать? Это часть более крупной формулы, которую я упростил для этого вопроса.

(ред улучшить краткость и ясность)

+0

Если бы я был в VBA, то я мог бы проверить размер входной таблицы, а затем убедитесь, что текущая строка не превышала ее. Но я не в VBA. –

+0

Простите меня, но способ, которым вы структурировали свой вопрос, настолько длинный и сложный, что я чувствую, что общая точка того, что вы просите, может потеряться. Кажется, что вы хотите просто добавить предложение в формулу массива так, чтобы в строках, в которые вы копируете эту формулу, за пределы ожидаемого количества возвратов, возвращается что-то, кроме ошибки. Однако, если это так, тогда: а) это не совсем ясно из вашего описания, и б) ошибка в таких случаях не будет (обычно) # N/A, а скорее #NUM !. Кроме того, неясно, почему вы включаете 4-й параметр INDEX здесь (?) –

+0

Я также не понимаю эти предложения, которые вы пытаетесь использовать с = IFERROR (ROW (input) или = IF (ISNA (ROW (input)). Предполагая, что ввод - это просто ссылка диапазона на какую-либо таблицу или другую, как номер строки может быть ошибкой? (Если ссылка на строку значения, передаваемого в какой-либо точке, не превышает 1048576, конечно.) –

ответ

1

Я считаю, что в таких пунктах, Excel дает преимущество для искусственного расширения ссылки совпадающего диапазона рабочего листа, выбранного (который всегда будет делать путем заполнения с # N/As), сначала разрешая предложение IF над массивом.

Таким образом, в то время как «нормально» (например, в формуле массива одноклеточных), например:

=SUM(IF(ISNA(ROW(input)),"YES","NO")) 

бы, эффективно, принуждать Excel в расширении одного значение_если_истина и значение_если_ложь параметров Если функция в синтаксически соответствующие массивы этих значений, а именно:

=SUM(IF({FALSE;FALSE;FALSE;FALSE;FALSE},{"YES","YES","YES","YES","YES"},{"NO","NO","NO","NO","NO"})) 

т.е.

=SUM({"NO";"NO";"NO";"NO";"NO"}) 

с формулами многоэлементной матрицы, например. ваш:

=IF(ISNA(ROW(input)),"YES","NO") 

вошел за пределы диапазона в 10-клеток, НЕ первым решен таким образом:

=IF(ISNA({1;2;3;4;5;#N/A;#N/A;#N/A;#N/A;#N/A}),{"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES"},{"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO"}) 

(В котором параметры значение_если_истина и значение_если_ложь являются первым повторно рассчитаны в соответствии с размером диапазона рабочего листа, в котором вводится массив.)

ie:

=IF({FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE},{"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES"},{"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO"}) 

т.е.:

={"NO";"NO";"NO";"NO";"NO";"YES";"YES";"YES";"YES";"YES"} 

, а скорее как:

=IF(ISNA({1;2;3;4;5;#N/A;#N/A;#N/A;#N/A;#N/A}),{"YES";"YES";"YES";"YES";"YES";#N/A;#N/A;#N/A;#N/A;#N/A},{"NO";"NO";"NO";"NO";"NO";#N/A;#N/A;#N/A;#N/A;#N/A}) 

(значение_если_истина и значение_если_ложь параметры первого повторного размеры в соответствии а с размерами Именованный диапазон ввод.)

т.е .:

=IF({FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE},{"YES";"YES";"YES";"YES";"YES";#N/A;#N/A;#N/A;#N/A;#N/A},{"NO";"NO";"NO";"NO";"NO";#N/A;#N/A;#N/A;#N/A;#N/A}) 

т.е .:

{"NO";"NO";"NO";"NO";"NO";#N/A;#N/A;#N/A;#N/A;#N/A} 

Надежда, что помогает немного.

С уважением

+0

Хм ... Мне немного поздно в моей ночи, поэтому мое мышление не на 100%, но ... если бы это было так, не могли бы мы просто использовать '= IF (ISNA (ROW (input)), {" Y " "Y", "Y", "Y", "Y", "Y", "Y", "Y"}, { "N", "N", "N", "N"," N "," N "," N "," N "})'? Обратите внимание, что всего 8 случаев (8 «Y» и «N»), чтобы показать какие-либо другие странные результаты (например, для некоторых ** других ** неясных причин все 10 работ), но я также пробовал это с 10 случаев. Я все еще получаю 5 хороших ответов и 5 # N/As. Или я чего-то не хватает? –

+0

Приятная попытка, хотя я не верю, что вам разрешено искусственно расширять диапазоны! Возможно, моя попытка объяснение было не совсем правильным: по-другому, Excel уже определил, что другие, посторонние элементы в этом массиве недействительны. Я предполагаю, что ваши дополнительные «N» и «Y» будут, по сути, «заменены» на « # N/A здесь (из-за отсутствия лучшего определения). Хотя я признаюсь, что мы могли бы сделать с представителем от Microsoft здесь, чтобы объяснить это! –

+0

ОК, продолжите, я попытался создать два именованных диапазона, каждые 10 ячеек высокий, по одному с каждой ячейкой, содержащей «Y», называемый Ys, один с каждой ячейкой, содержащей «N», называемый Ns. Затем я сделал формулу массива 10 высокий с '= IF (I5: I14, Ys, Ns)', и это отлично работает. Сокращение Ys и Ns до 8 высоких также привело к ожидаемому ответу. Таким образом, похоже, что ваш ответ прав, и я просто не получаю массивы (я попытался создать формулу массива 10 с высокими значениями: = {"y", "y", "y", "y", "y" «N», «N», «N», «N», «N»} 'и просто получил все Ys, которых я не получаю. Время, чтобы сделать некоторое чтение! –