Как подвести именованное диапазон значений, которые содержат ошибки?

StackOverflow https://stackoverflow.com/questions/4739855

Вопрос

У меня есть электронная таблица Excel, которая импортирует данные из другого источника, на котором мне нужно запустить расчет. Данные, с которыми мне нужно работать, находятся в названном диапазоне - они находятся в диапазоне C12: C36 - но они называются «Sumdata».

Значения в этом диапазоне содержат ряд ошибок, включая #NUM! и #n/a, но потенциально могут содержать другие ошибки. Мне нужно суммировать эти значения.

Я понимаю, как сделать формулу суммы:

=SUM(SumData)

Или же

=SUM(C12:C36)

Я также могу использовать iferror для проверки ошибок:

=IFERROR(C12:C36, 0)

Но Iferror, кажется, только проверяет соответствующую строку в формуле, которую я вхожу. т.е. Если моя формула вводится в D12, она проверяет только ошибку в строке C12 и возвращает значение (или 0, если C12 содержит ошибку).

Если я комбинирую два, чтобы сделать:

=SUM(IFERROR(SumData,0))

Я не получаю действительного возврата. Это в основном дает мне ближайшую соответствующую строку - например:

    C      D
    -----------
12  #NUM!  
13  2      =SUM(IFERROR(SumData,0)) = 2 (I would expect this to produce 48)
14  5
15  7
16  #N/A
17  23
18  6
19  5

Что я делаю не так?

Это было полезно?

Решение

=SUM(IF(ISNUMBER(SumData),SumData))

Введено в виде формулы массива ... т.е. с помощью Ctrl+Shift+Enter, а не просто ввод. Если вы сделаете это правильно, Excel поставит вьющиеся скобки вокруг формулы {}.

Другие советы

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

=SUMIFS(sumrange,criteria range1,"<>"&"#NAME?",criteria range2,"<>"&"#N/A",criteria range3,"<>"&"NUM!")

Поскольку вы не знаете, какая ячейка имеет ошибку, желательно использовать критерии диапазоны так же, как и Sumrange.

К сожалению, это документированная функциональность функции IFERROR, как найдено здесь: http://office.microsoft.com/en-us/excel-help/iferror-function-ha001231765.aspx.

По сути, вход диапазона не приводит к выводу диапазона. Скорее, вы получаете выход для позиции в диапазоне, указанной ячейкой, где происходит вызов iferror. Это довольно неинтуитивно.

Одним из решений является вставка столбца для удержания индивидуальных результатов IFERROR и суммировать это, как показано ниже. После того, как вы настроили столбец D, просто сделайте его скрытым.

    C      D                      E
    --------------------------------------
12  #NUM!  =IFERROR(E12, 0) -> 0
13  2      =IFERROR(E13, 0) -> 2  =SUM(E12:E19) -> 48
14  5      =IFERROR(E14, 0) -> 5
15  7      =IFERROR(E15, 0) -> 7
16  #N/A   =IFERROR(E16, 0) -> 0
17  23     =IFERROR(E17, 0) -> 23
18  6      =IFERROR(E18, 0) -> 6
19  5      =IFERROR(E19, 0) -> 5

Это работает для меня:

=IF(SUMIFS(RANGE,CRIT-RANGE,CRITCELL)=0,NA(),SUMIFS(RANGE,CRIT-RANGE,CRITCELL))

Но я использую таблицы, которые отображаются; Поэтому мне пришлось натолкнуть на него условный формат.

Если ячейка содержит ошибку: сделайте Font {тот же цвет, что и фон}

Работает очень хорошо для меня и красиво составляет мой график, не отображая данные (пока кто -то не выберет ячейку и не видит значение).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top