Получение #NUM! для внешних гнезд деления операторов IF
У меня есть некоторые цифры продаж, для которых у меня есть значения в фунтах, единицах и долларах. Из 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 ответ
Я нашел решение, хотя мне не ясно, почему это работает, в то время как другая структура не работает. Вот как я это настроил:
=
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 друг против друга.