СРЕДНЕЛИН не работает, а СРЕДНИЙ (ЕСЛИ (работает

У нас есть большая таблица, которую мы используем для расчета показателей гонщиков. Он был стабильным в течение некоторого времени. Сегодня я открыл его и обнаружил, что одна из таблиц вычисляет некорректно. Я попытался пересчитать лист (он настроен на ручной расчет) и попытался восстановить дерево (ctl + alt + shift + f9), но безрезультатно. Другие формулы, ссылающиеся на одну и ту же функцию диапазона правильно, как и другие формулы, использующие среднее значение if.

Переменные

list_of_names = Список имен и фамилий в одной текстовой строке, импортированный из файла CSV

local_name = имя (100% гарантированное включение в list_of_names) для расчета средней производительности водителя в данном секторе трассы.

sector_percent = процент поездок водителя через определенный сектор, которые попадают в заранее определенный диапазон.

sector_count = количество поездок, которые водитель совершает через сектор

Моя исходная формула возвращает ошибку #Value. Это исходная формула (фактическая формула содержит оператор ЕСЛИОШИБКА, но я удалил его здесь для ясности. В любом случае возникает ошибка #VALUE).

{= СРЗНАЧЕСЛИ (процент_сектора, список_имён, локальное_имя, процент_сектора, "> 0", количество_секторов < / em>, ">" & min_number_sectors)}

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

{= СРЕДНИЙ (IF (list_of_names = local_name, IF (сектор_процент> 0, IF (сектор_count> мин_число_секторов, процент_секторов, 0))))}

Если вы удалите переменные list_of_names и local_name из формулы AVERAGEIFS, она будет вести себя правильно (при условии, что данные соответствуют критериям). Это заставило меня поверить, что список имен и локальное имя не соответствуют типу данных. Однако ошибка #VALUE все равно возникает, если оба параметра установлены как общие или текстовые. TYPE (list_of_names) или TYPE (local_name) оба в настоящее время возвращают 2. {TYPE (list_of_names)} возвращает 64, как и должно.

Лист может правильно выполнять функцию list_of_names to local_name в других местах книги и в других областях того же листа.

Я пытался:

-Замена всех именованных диапазонов фактическими ячейками, на которые ссылается имя в формуле

-Ссылаясь на разные local_names в list_of_names

-INDEX (list_of_names, ROW (A1)) правильно сообщает список имен при его перетаскивании.

-Различные порядки критериев с использованием других критериев.

- Ряд других сиюминутных изменений, которые я сейчас не могу вспомнить.

По сути, сравнение list_of_names с local_name терпит неудачу в этой области листа каждый раз при использовании AVERAGEIFS, где AVERAGE (IF (нет.

Для меня формула в любом случае верна, но внезапный сбой в этой части листа странен.

Это мой первый пост здесь, и я буду признателен за любую доступную помощь. Надеюсь, я предоставил достаточно информации, чтобы дать ответ. Если нет, дайте мне знать, и я заполню все пробелы.


person RSR_john    schedule 18.02.2015    source источник
comment
Одинаковы ли диапазоны ячеек? Ошибка #VALUE! часто возникает, когда различные диапазоны размеров передаются в функция AVERAGEIFS.   -  person    schedule 18.02.2015
comment
Согласен - это тоже мой диагноз - у вас абсолютно не может быть несовпадающих размеров диапазона в _1 _......, но формулы массива все еще могут работать с диапазонами разных размеров (при правильных обстоятельствах)   -  person barry houdini    schedule 18.02.2015
comment
Поделитесь актуальной формулой?   -  person guitarthrower    schedule 18.02.2015
comment
Обратите внимание, что если у вас действительно есть этот ноль прямо в конце СРЕДНЕГО (формула массива IF, которая потенциально может исказить ваше среднее значение, потому что во всех случаях, когда первые два критерия удовлетворяются, а третий нет, он добавит ноль к значениям для усреднения - я рекомендую удалить , 0   -  person barry houdini    schedule 18.02.2015
comment
Вот исходная нерабочая формула [ссылка] imgur.com/ChvJ4nq   -  person RSR_john    schedule 18.02.2015
comment
@barryhoudini Ноль был просто заполнителем для значения FALSE. Когда я тестировал код, я использовал текстовую строку, которая, возможно, не подходила для публикации.   -  person RSR_john    schedule 19.02.2015


Ответы (1)


И @barryhoudini, и @Jeeped верны. Мне не удалось перетащить информацию в одной из исходных таблиц достаточно далеко, что привело к несоответствию размеров в размерах диапазона. Я не могу понять, как принять это как ответ, кроме как ответить на него самому, что не повлечет за собой должного признания там, где это определенно необходимо. Благодарю вас обоих за помощь, она была лаконичной и отличной. Я до сих пор не могу понять, почему одна формула работает, а другая - нет. Возможно ли, что AVERAGE (If имеет менее строгий набор ограничений, когда дело доходит до размера диапазона?

person RSR_john    schedule 18.02.2015
comment
Вы не можете использовать формулу массива, подобную этой: _1 _.... где диапазон для усреднения больше диапазона критериев (вы получаете ошибку # N / A), но эта версия работает в определенной степени =AVERAGE(IF(A2:A10="x",B2:B9)) - она ​​не работает только в том случае, если A10 = x - значит, ваша формула, вероятно, соответствовала второй - person barry houdini; 19.02.2015
comment
Это кажется достаточно близким к принятому ответу. Подождите 48 часов, и вы сможете принять ответ сами. +1 от меня за то, что разобрался в корне проблемы (хотя и с небольшим подталкиванием!) :) см. Могу ли я ответить на свой вопрос? - person ; 19.02.2015
comment
Наконец, взглянул на изображение формулы (й), которую вы предоставили. Если именованные диапазоны регулярно меняют размер из-за нестабильности персонала, я бы посоветовал определять их с помощью формул. Пример: если CR_Driver_In имеет ссылку на Sheet1! CC3: * ‹последняя ячейка в столбце CC с именем› *, тогда Refers to: может быть = Sheet1! CC3: INDEX (Sheet1 ! CC: CC, MATCH (zzz, Sheet1! CC: CC)). SR_S01_Percent будет выглядеть примерно так: = Sheet1! CD3: INDEX (Sheet1! CD: CD, MATCH (zzz, Sheet1! CC: CC)). Используя один и тот же ограничитель строк для разных столбцов, вы никогда больше не столкнетесь с этим. - person ; 19.02.2015
comment
@Jeeped В настоящее время мы используем следующее в ссылках: = SHEET1! $ B $ 2: OFFSET (SHEET1! $ B $ 2,0,0, COUNTA (SHEET1! $ B $ 2: $ B $ 5000), 1) . Идея заключалась в том, что у нас не будет более 5000 строк данных, что было до сих пор, но я стремился сделать генерацию имени более надежной. Я дам ему попробовать. Спасибо! - person RSR_john; 19.02.2015