2013-07-10 4 views
0

Фон: Я использую функции Excel для синтаксического анализа большого количества данных, по существу создавая гибкую сводную таблицу. Он сортирует много данных о времени гонок на машине и т. Д. В этой части листа я ищу минимальные интервалы времени для каждого автомобиля. Остальная часть листа позволяет избежать макросов и VBA, поэтому я хотел бы избежать этого.INDIRECT() возвращает #VALUE! неожиданно

выпуск: Моя формула работала, когда нет нулей, но иногда есть нули, которые мне нужно исключить. Моя формула массива является довольно сложной, но изменение, которое я сделал, что сломал его заключается в следующем:

OLD (рабочий):

{=min(if(car_number = indirect("number_vector"), indirect("data_vector")))} 

NEW (нерабочий):

{=min(if(and(car_number = indirect("number_vector"),not(0=indirect("data_vector"))), indirect("data_vector")))} 

Я используя INDIRECT() с этим точным аргументом несколько раз в формуле. Однако в этом конкретном случае (внутри NOT()) он возвращает #VALUE! вместо {data1; ...; datan}. Пожалуйста, смотрите скринкапы ниже.

Перед оценкой:

https://lh3.googleusercontent.com/-L8akIeJU_MU/Ud3Lsl1c5mI/AAAAAAAAAEY/MfrwGRi_29k/w565-h338-no/before.PNG

После оценки:

https://lh3.googleusercontent.com/-SQK3fc33fzo/Ud3LsqjeOQI/AAAAAAAAAEU/oAmcxtr6tFU/w563-h303-no/after.PNG

ответ

1

Я подозреваю, что ваша и функция может быть проблемой - и возвращает только один результат не массив при необходимости попробуйте использовать несколько ИФ, как это

=min(if(car_number = indirect("number_vector"),IF(indirect(data_vector)<>0, indirect(data_vector))))

Обратите внимание, что я также использовал <>, а не использовать NOT

являются векторные данные и номер вектора одинакового размера и формы? (оба вертикальные?) Почему существуют котировки вокруг одного, но не другого?

+0

Я попробую этот подход, ваша логика имеет смысл. Оба вектора имеют одинаковый размер и форму, они представляют собой разные столбцы в одной таблице. Цитата была ошибкой в ​​моем псевдокоде (фиксированном). – swolfe

+0

OK - если это не сработает, проблема может быть функцией COLUMN, которую я вижу из вашего снимка экрана. COLUMN иногда вызывает проблемы, потому что возвращает массив, например {4}, когда вы ожидаете 4 - это может вызвать проблемы с оценкой - исправить wrap COLUMN в другой функции, такой как SUM, например ** SUM (COLUMN()) ** –