Сводная таблица мощности Excel — вложенная ошибка IF ИЛИ формулы

#excel #powerquery #powerpivot #datamodel

#excel #powerquery #powerpivot #модель данных

Вопрос:

Я пытался использовать указанную ниже формулу, которая не работает и показывает сообщение об ошибке с указанием
«Выражение Power pivot, которое выдает тип данных variant, не может использоваться для определения вычисляемых столбцов»

 IF (
    OR ( Table2[TeamStatus] = "Lost", Table2[TeamStatus] = "Won't proceed" ),
    "0",
    IF (
        OR ( Table2[TeamStatus] = "Next level", Table2[TeamStatus] = "Disqualified" ),
        "0",
        IF (
            AND ( YEAR( Table2[Match Date] ) = YEAR( TODAY() ), [TeamStatus] <> "Won" ),
            [Spent Amount],
            0
        )
    )
)
 

Типы данных столбцов

 1) [TeamStatus] = Text
2) [Match Date] = Date
3) [Spent amount] = Number
 

Цель этой формулы — исключить следующие строки из столбца [TeamStatus] (т. Е. В столбце [TeamStatus] есть «Потерянные», «Не будут продолжены», «Следующий уровень», «Дисквалифицированные» тексты), тогда результат должен быть равен нулю, а затем вычислить потраченную сумму для всехдругие категории в столбце [TeamStatus] и другое условие (например, если год является текущим годом) выполнены.

Я пытался за последний 1 день заставить эту формулу работать, но безуспешно. Я также пытался использовать функцию FORMAT (), но она все равно не работает.

Может кто-нибудь, пожалуйста, помочь мне?

Ответ №1:

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

Обратите внимание, что ваша формула иногда возвращает "0" , а иногда возвращает 0 .

Либо измените первые два нуля на числа вместо текста, либо измените последний ноль на текст и используйте FORMAT on [Spent Amount] для преобразования его в текст.


В качестве примечания, нельзя ли упростить вашу формулу до just?

 IF (
    AND ( YEAR ( Table2[Match Date] ) = YEAR ( TODAY () ), [TeamStatus] = "Won" ),
    [Spent Amount],
    0
)
 

Комментарии:

1. Извините, я должен был привести другой пример. В этой формуле я могу просто, как вы указали, однако мне также нужно создать 6 разных формул, и одна из них будет «<> Выиграна», и в этом случае она не должна принимать те 4 [TeamStatus], указанные выше, а остальные [TeamStatus] следует учитывать.