Получение #NUM! для внешних гнезд деления операторов IF

233
Frameworker247

У меня есть некоторые цифры продаж, для которых у меня есть значения в фунтах, единицах и долларах. Из 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! всегда возвращается для внешних аргументов.

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

0

1 ответ на вопрос

0
Frameworker247

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

= 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 друг против друга.

Похожие вопросы