2013-05-20 2 views
9

В отчете таблицы сводной таблицы Excel есть возможность для вмешательства пользователя, вставив «Расчетное поле», чтобы пользователь мог дальше манипулировать отчетом. Это похоже на лучший подход по сравнению с использованием формулы для данных таблицы сводных данных за пределами таблицы сводных данных по многим очевидным причинам.Использовать формулу в пользовательском вычисленном поле в сводной таблице

«вычисляемое поле» диалог, выглядит следующим образом:

enter image description here

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

Например, если по какой-то причине я хочу центрировать данные в диапазоне A1:A100, я бы использовал = A1 - AVERAGE(A1:A100) и заполнил все строки в обычной таблице Excel. Но для таблицы Pivot, если я использую диалог «Расчетное поле» и добавляю новую переменную с формулой: = 'Actual Sales' - AVERAGE('Actual Sales') Я получаю 0 в качестве вывода.

Так что мой вопрос: как я могу ссылаться на весь диапазон для переменной «Фактические продажи» в диалоговом окне «Расчетное поле», так что AVERAGE() вернет среднее значение всех целевых ячеек?

ответ

12

Я отправлю этот комментарий в качестве ответа, поскольку я уверен, что то, что я попросил, невозможно.

I) Пара подобных вопросов пытается сделать то же самое, но безуспешно:

II) В этой статье: Excel Pivot Table Calculated Field например перечислены многие ограничения вычисляемого поля :

  • Для расчета f ields, отдельные суммы в других полях суммируются, а затем расчет производится на общую сумму.
  • вычисляемого поля формулы не может относиться к итогам сводной таблицы или подытогами
  • вычисляемого поля формулы не могут ссылаться на ячейки рабочего листа по адресу или по имени.
  • Сумма является единственной функцией, доступной для вычисленного поля.
  • Рассчитанные поля недоступны в сводной таблице на основе OLAP.

III) Существует крошечная ограниченная возможность использовать AVERAGE() и аналогичные функции для диапазона ячеек, но это относится только если сводная таблица не сгруппировали ячейки, что позволяет перечислять клетки как элементы в новой группе (справа на «Fileds» на приведенном выше снимке экрана), а затем пользователь может вычислить AVERAGE(), явно ссылаясь на каждый элемент (ячейку), из списка Items, в качестве аргумента. Может быть, здесь лучше пояснить: Calculate values in a PivotTable report
Для моей сводной таблицы это не применимо, потому что мой диапазон был недостаточно мал, этот вариант был разумным выбором.

3

Некоторые из них можно, в частности, обращающиеся подитоги:

«В Excel 2010+, вы можете щелкнуть правой кнопкой мыши на значения и выберите Показать значения As ->% от родительской строки Total.» (Или% от Parent Column Total)

enter image description here

  • И убедитесь, что рассматриваемое поле представляет собой поле число, которое можно резюмировать, это не работает для текстовых полей, для которых только счетчик обычно информативно.

Источник: http://datapigtechnologies.com/blog/index.php/excel-2010-pivottable-subtotals/

0

Сводная таблица Excel2007- среднем, чтобы исключить нули

= сумма (XX: XX)/засчитан, если (XX: XX, "> 0")

Счет USD

Кол-во Цена (количество) стоимость (сумма) 300 0,000 000,000 1000 0,385 385,000

Средний балл должен исключить норму 0.000

1

Спасибо, что посадили семя, Cel! Я боролся с этим часами, наконец, понял. Я считал текстовое поле, oops, расчет не удался.

Создал 2 вспомогательных столбца в моих исходных данных, каждый из которых дал 1, если условие выполнено, 0, если нет. Затем вытащили каждый в сводную колонку, мои называются «Inbd» (для Inbound), «Back», где «Back» - это возврат к отправке объекта, поэтому на самом деле общее количество - одна поездка, а не 2 поездки, back - это подмножество входящих, и не каждый inbd имеет обратную сторону (очевидно). Попытка вычислить в сводной таблице, чтобы я мог сортировать по полю курс возврата к входящему для каждого отправляющего объекта.

Для моего расчетного поля я использовал: =IFERROR(IF(Pvt_Back>0,Pvt_Back/Pvt_Inbd,0),0) Итак: если мы отправили обратно на отправку некоторого количества раз больше 0, разделите Back/Inbd, чтобы дать мне курс; если оно равно 0, то 0; если Inbd = 0, то 0, чтобы избежать ошибки Div/0.

Еще раз спасибо! :)

+0

Вы можете проверить формулу в вычисленном поле? Я бы предположил, что это будет '= IFERROR (IF (Pvt_Inbd> 0, Pvt_Back/Pvt_Inbd, 0), 0)'. – josliber

Смежные вопросы