Как определить диапазон, используя формулу Excel - PullRequest
0 голосов
/ 10 сентября 2018

Для того, чтобы сделать некоторые вычисления для средних и разностей значений в столбцах, я определил имя, основанное на диапазоне, но оно, похоже, полностью исходит из ума:

У меня есть ячейка (D13), определенная как Header_First _Answer, которая содержит заголовок столбца, и у меня есть значение (в настоящее время составляющее 69), которое содержит количество записей, называемое Total_Count.

Я определил записи этого столбца как другое имя: «All_First_Anspted_Dates», определенное как =OFFSET(Header_First_Answer;1;0):OFFSET(Header_First_Answer;Total_Count;0) (начните с первой записи в Header_First_Answer, возьмите до 69 записей и определите диапазон из этого) .

В ячейке G5 я использую это имя для выполнения некоторых вычислений (вычисления средних значений), но это, похоже, не работает (есть ошибка #Value).

После второго комментария Рори: G5 формула и первый результат оценки формулы:

Формула:

=AVERAGE(IF(ISBLANK(All_First_Answered_Dates);TODAY();All_First_Answered_Dates) - All_Start_Dates)

Первый результат оценки:

=AVERAGE(IF(ISBLANK(#Value!);TODAY();All_First_Answered_Dates) - All_Start_Dates)

Отсюда мой вывод:

После некоторой проверки я обнаружил, что это связано с именем «All_First_Anspted_Dates», которое, кажется, интерпретируется один раз слишком много (или как я могу это объяснить):

В разных ячейках я ввел формулу =OFFSET(Header_First_Answer;1;0):OFFSET(Header_First_Answer;Total_Count;0) (что в точности означает "All_First_Anspted_Dates"), и каждый раз, используя функцию Evaluate Formula, я вижу, что последний, кроме одного, результат правильный: $D$14:$D$82. Однако после этого выполняется другая оценка, превращающая это значение в 43283 (если формула введена в «J14»), 43300 (в случае, если формула введена в «J15»), ... и в случае I введите эту формулу в ячейку с номером строки ниже 14, у меня есть значение ошибки #Value (что объясняет неверный результат в ячейке G5).

Если я просто введу формулу =$D$14:$D$82 в любую из упомянутых ячеек, то будет показано содержимое некоторых ячеек в столбце D (которые представляют собой даты, а не значения, такие как 43283 или 43300).

Похоже, что объявление диапазона как =x:y, где x и y являются результатами формулы, не работает.

Кто-нибудь знает, как я могу определить диапазон как формулу, которую я затем могу использовать для определения имени?

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

  • В ячейке J13 есть формула =OFFSET(Header_First_Answer;1;0):OFFSET(Header_First_Answer;Total_Count;0).
  • В ячейке J14 та же формула.
  • В ячейке K14 есть формула =$D$14:$D$82.

Screenshot

В целях завершения ниже приведен скриншот менеджера имен, содержащий оба упомянутых имени (те, которые выбраны в менеджере имен):

Name manager screenshot

Редактировать после первого комментария:

Идея диапазона заключается в следующем:
1. Возьмите первый ряд под Header_First_Answer, не используйте другие столбцы: OFFSET(Header_First_Answer;1;0)
2. Возьмите строку Total_Count под Header_First_Answer, не используйте другие столбцы: OFFSET(Header_First_Answer;Total_Count;0)
3. Определите диапазон на основе этих двух ячеек, поставив точку с запятой между ними.

Я не знал о height и width функциях Offset() функции листа. Я реализовал их, что значительно упрощает формулы.

К сожалению, проблема все еще сохраняется.

Заранее спасибо
Dominique

1 Ответ

0 голосов
/ 11 сентября 2018

Я только что нашел ответ, что пошло не так:
Формула должна была быть формулой массива. Что-то пошло не так, и при попытке отладки я случайно переформатировал формулу в обычную формулу (я должен был нажать «ENTER» вместо «Ctrl» + «Shift» + «ENTER») в какой-то момент.

Я повторно применил формулу массива (используя «Ctrl» + «Shift» + «ENTER»), получив формулу вроде:

{=AVERAGE(IF(ISBLANK(All_First_Answered_Dates);TODAY();All_First_Answered_Dates) - All_Start_Dates)}

(обратите внимание на фигурные скобки {, })

Теперь все работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...