#Ошибка не верная ссылка на ячейку! при работе со сводными таблицами

Глеб Моисеев 0 Баллы репутации
2026-04-17T10:03:13.5133333+00:00

Доброго времени суток. Работаю со сводной таблицей ниже.

Пользовательское изображение Она состоит из:
Строк - название курсов (формат данных общий)
Столбцов - оценка студента NPS (формат данных числовой от 1 до 10),
Значения - количество по столбцу оценка студента NPS Ниже формула для расчёта NPS в которой возникает ошибка, она находиться в свободной ячейке на этом же листе.

=((ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("[Measures].[Число элементов в столбце оценка студента NPS]";$A$3;"[Таблица1].[оценка студента NPS]";"[Таблица1].[оценка студента NPS].&[10]")+ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("[Measures].[Число элементов в столбце оценка студента NPS]";$A$3;"[Таблица1].[оценка студента NPS]";"[Таблица1].[оценка студента NPS].&[9]"))-(ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("[Measures].[Число элементов в столбце оценка студента NPS]";$A$3;"[Таблица1].[оценка студента NPS]";"[Таблица1].[оценка студента NPS].&[6]")+ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("[Measures].[Число элементов в столбце оценка студента NPS]";$A$3;"[Таблица1].[оценка студента NPS]";"[Таблица1].[оценка студента NPS].&[5]")+ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("[Measures].[Число элементов в столбце оценка студента NPS]";$A$3;"[Таблица1].[оценка студента NPS]";"[Таблица1].[оценка студента NPS].&[4]")+ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("[Measures].[Число элементов в столбце оценка студента NPS]";$A$3;"[Таблица1].[оценка студента NPS]";"[Таблица1].[оценка студента NPS].&[3]")+ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("[Measures].[Число элементов в столбце оценка студента NPS]";$A$3;"[Таблица1].[оценка студента NPS]";"[Таблица1].[оценка студента NPS].&[2]")+ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("[Measures].[Число элементов в столбце оценка студента NPS]";$A$3;"[Таблица1].[оценка студента NPS]";"[Таблица1].[оценка студента NPS].&[1]")))/ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("[Measures].[Число элементов в столбце оценка студента NPS]";$A$3) Она работает, но когда вставляю срез, или фильтр по столбцу "Название курсов" или другому столбцу из исходных данных. Происходит ошибка.

Пользовательское изображение
Пользовательское изображение

Я предполагаю, что ошибка связанна с тем, что при определённых параметрах фильтрации, в сводной таблице не существует всех указанных видов значений столбца "оценка студентов NPS". Была идея написать, через условие ЕСЛИ, но не до конца понимаю как реализовать правильно алгоритм. Возможно там всё проще, но в интернете, доке Excel или ИИ информации не смог найти. Если есть идеи как можно решить это, буду очень рад вашей помощи) .....

Microsoft 365 и Office | Excel | Для бизнеса | Windows
Microsoft 365 и Office | Excel | Для бизнеса | Windows

Семейство программного обеспечения Майкрософт для работы с электронными таблицами, оснащенное инструментами для анализа, построения диаграмм и обмена данными

Комментариев: 0 Без комментариев

1 ответ

Сортировать по: Самые старые
  1. Tamara-Hu 17,960 Баллы репутации Внешний персонал Microsoft Модератор
    2026-04-17T13:18:23.94+00:00

    Ответ был переведён автоматически. В результате перевода возможны грамматические ошибки или необычные формулировки. 


    Здравствуйте @Глеб Моисеев, 

    Спасибо за подробное описание проблемы и предоставленные скриншоты.  Поведение, которое вы наблюдаете, является ожидаемым и соответствует тому, как функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ изначально предназначена для работы. 

    Согласно документации Microsoft, функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ возвращает данные только по тем элементам, которые в текущий момент существуют и отображаются в сводной таблице. 

    «Функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ возвращает видимые данные из сводной таблицы».  (Источник: документация Microsoft по функции ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ) 

    Это означает, что при применении среза, фильтра отчёта, или фильтрации исходных данных (например, по полю «Название курса»), некоторые значения в поле оценка студента NPS (1–10) могут полностью отсутствовать в структуре сводной таблицы. 

    Когда элемент сводной таблицы (например, оценка 10 или оценка 1) отсутствует после применения фильтрации: 

    • соответствующий столбец или элемент удаляется из сводной таблицы; 
    • функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ не может определить запрошенный элемент; 
    • Excel возвращает ошибку #ССЫЛКА! (Неверная ссылка на ячейку), а не значение 0. 

    Это происходит потому, что запрошенный элемент сводной таблицы не существует в текущем контексте фильтров. 

    Важно учитывать, что при работе со сводными таблицами: 

    • «значение равно 0» и «значение не существует» - это разные ситуации; 
    • функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ не возвращает 0, если элемент отсутствует; 
    • в таком случае функция возвращает ошибку. 

    Для расчётов показателей, таких как NPS, отсутствующие значения необходимо явно обрабатывать как нулевые, иначе выполнение вычислений становится невозможным. 

    Для вашего сведения: Функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ

    Корректный и поддерживаемый подход 

    Правильный и поддерживаемый Microsoft подход заключается в том, чтобы преобразовывать отсутствующие элементы сводной таблицы в нулевые значения до выполнения расчётов.  Это достигается оборачиванием каждого вызова функции ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ в функцию ЕСЛИОШИБКА(…;0). 

     

     =( 
      ЕСЛИОШИБКА( 
        ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ( 
          "[Measures].[Число элементов в столбце оценка студента NPS]"; 
          $A$3; 
          "[Таблица1].[оценка студента NPS]"; 
          "[Таблица1].[оценка студента NPS].&[10]" 
        ); 
        0 
      ) 
      + 
      ЕСЛИОШИБКА( 
        ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ( 
          "[Measures].[Число элементов в столбце оценка студента NPS]"; 
          $A$3; 
          "[Таблица1].[оценка студента NPS]"; 
          "[Таблица1].[оценка студента NPS].&[9]" 
        ); 
        0 
      ) 
    ) 
    - 
    ( 
      ЕСЛИОШИБКА( 
        ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ( 
          "[Measures].[Число элементов в столбце оценка студента NPS]"; 
          $A$3; 
          "[Таблица1].[оценка студента NPS]"; 
          "[Таблица1].[оценка студента NPS].&[6]" 
        ); 
        0 
      ) 
      + 
      ЕСЛИОШИБКА( 
        ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ( 
          "[Measures].[Число элементов в столбце оценка студента NPS]"; 
          $A$3; 
          "[Таблица1].[оценка студента NPS]"; 
          "[Таблица1].[оценка студента NPS].&[5]" 
        ); 
        0 
      ) 
      + 
      ЕСЛИОШИБКА( 
        ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ( 
          "[Measures].[Число элементов в столбце оценка студента NPS]"; 
          $A$3; 
          "[Таблица1].[оценка студента NPS]"; 
          "[Таблица1].[оценка студента NPS].&[4]" 
        ); 
        0 
      ) 
      + 
      ЕСЛИОШИБКА( 
        ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ( 
          "[Measures].[Число элементов в столбце оценка студента NPS]"; 
          $A$3; 
          "[Таблица1].[оценка студента NPS]"; 
          "[Таблица1].[оценка студента NPS].&[3]" 
        ); 
        0 
      ) 
      + 
      ЕСЛИОШИБКА( 
        ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ( 
          "[Measures].[Число элементов в столбце оценка студента NPS]"; 
          $A$3; 
          "[Таблица1].[оценка студента NPS]"; 
          "[Таблица1].[оценка студента NPS].&[2]" 
        ); 
        0 
      ) 
      + 
      ЕСЛИОШИБКА( 
        ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ( 
          "[Measures].[Число элементов в столбце оценка студента NPS]"; 
          $A$3; 
          "[Таблица1].[оценка студента NPS]"; 
          "[Таблица1].[оценка студента NPS].&[1]" 
        ); 
        0 
      ) 
    ) 
    ) 
    / 
    ЕСЛИОШИБКА( 
      ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ( 
        "[Measures].[Число элементов в столбце оценка студента NPS]"; 
        $A$3 
      ); 
      0 
    ) 
    

     

    Пояснение 

    При применении среза или фильтра некоторые оценки NPS (например, 10 или 1) могут полностью отсутствовать в сводной таблице.  Функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ в этом случае возвращает ошибку #ССЫЛКА!, а не значение 0. 

    Оборачивание каждого вызова в ЕСЛИОШИБКА(…;0) преобразует ситуацию:  «элемент не существует» > 0, 

    что предотвращает возникновение ошибки и позволяет корректно выполнять расчёт NPS при любых фильтрах и срезах. 

    Надеюсь, это объяснение и предложенное решение помогут устранить проблему. Если потребуется дополнительная помощь, пожалуйста, оставьте комментарий. 


    Если ответ оказался полезным, пожалуйста, нажмите «Принять ответ» и поставьте голос «за». Если у вас есть дополнительные вопросы по этому ответу, нажмите «Комментарий».

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

    Этот ответ помог вам?


Ваш ответ

Автор вопроса может устанавливать для ответов пометку "Принято", а модераторы — пометку "Рекомендуется". Благодаря этому пользователям становится проще понять, какой из ответов помог решить проблему автора.