У меня есть некоторые цифры продаж, для которых у меня есть значения в фунтах, единицах и долларах. Из PowerPivot я создаю сводную диаграмму со столбцами периодов (текущая неделя, MTD, QTD, YTD) и подколонками "Measure" (доллары, фунты, единицы). Используемые мной вычисления получают процентную разницу между значением этого года для данного периода и показателя и значением прошлого года для того же периода и показателя, например, ([MTD This Year] - [MTD Last Year])/[MTD Прошлый год].

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

Меры, которые я использую, чтобы получить значения этого года и прошлогодние, работают очень хорошо. Но когда я делаю деление, я получаю #NUM! ошибки только для внешних гнезд оператора IF. Я поэкспериментировал с этим и упростил формулу до ее основных частей (то есть это упрощение моей формулы):

=
(
IF(
    COUNTROWS(VALUES(Periods[Period]))=1,
    IF(
        VALUES(Periods[Period])="Current Week",
        1,
        IF(
            VALUES(Periods[Period])="MTD",
            2,
            IF(
                VALUES(Periods[Period])="QTD",
                3,
                IF(
                    VALUES(Periods[Period])="YTD",
                    4
                )
            )
        )
    ),
    0

)
) 
/
(
IF(
    COUNTROWS(VALUES(Periods[Period]))=1,
    IF(
        VALUES(Periods[Period])="Current Week",
        1,
        IF(
            VALUES(Periods[Period])="MTD",
            2,
            IF(
                VALUES(Periods[Period])="QTD",
                3,
                IF(
                    VALUES(Periods[Period])="YTD",
                    4
                )
            )
        )
    ),
    0
)
)

Я ожидаю, что это вернет "1" для всех значений. Вместо этого он возвращает #NUM! для всех значений текущей недели и MTD и "1" для остальных. Если я переставлю вложенные аргументы, #NUM! всегда возвращается для внешних аргументов.

Есть идеи, что здесь происходит?

1 ответ1

0

Я нашел решение, хотя мне не ясно, почему это работает, в то время как другая структура не работает. Вот как я это настроил:

=
IF(
    COUNTROWS(VALUES(Periods[Period]))=1,
    IF(
        VALUES(Periods[Period])="YTD",
        DIVIDE(1,1),
        IF(
            VALUES(Periods[Period])="QTD",
            DIVIDE(2,2),
            IF(
                VALUES(Periods[Period])="MTD",
                DIVIDE(3,3),
                IF(
                    VALUES(Periods[Period])="Current Week",
                    DIVIDE(4,4)
                )
            )
        )
    ),
    0
)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .