Процент от общего числа в сводной таблице

Я работаю в Excel 2007 и использовал SQL-запрос для извлечения данных о прохождении / сбое из двух тестовых установок в сводную таблицу. Ниже приведены мои текущие / идеальные результаты, пожалуйста, извините за форматирование дат!

Я пробовал «Настройки поля значений»> «Показать значения в процентах от столбца», но это не работает должным образом, поскольку также делит скорость прохождения между буровыми установками. Я нашел ссылки на изменение родительского столбца, но, похоже, это Excel 2010 и более поздние версии. Может ли кто-нибудь указать мне в правильном направлении?

Токовый выход

Pass Rate   Date                    
Outcome      2013-12-05 2013-12-08  2013-12-09  2013-12-10  2013-12-11
F                67         17          50          62           51 
RigOne           33         11          31          25           27
RigTwo           34          6          19          37           24
P                80         29          54          79           46
RigOne           50         21          32          42           21
RigTwo           30          8          22          37           25
Grand Total     147         46         104         141           97 

Идеальный выход

Pass Rate   Date                    
             2013-12-05 2013-12-08  2013-12-09  2013-12-10  2013-12-11
RigOne           %%         %%          %%          %%           %%
RigTwo           %%         %%          %%          %%           %%
Average          %%         %%          %%          %%           %% 

person Tom    schedule 11.12.2013    source источник


Ответы (2)


ЕСЛИ это тот результат, который вам нужен:

пример SO20518715

затем, предполагая, что ваши исходные данные находятся в четырех столбцах: установка, дата, результат и значение:

  1. Создайте PT с помощью Rig для меток строк, даты и результата (в порядке сверху вниз) для меток столбцов и суммы значений для значений Σ.
  2. В Быстром меню, Параметры сводной таблицы..., Итоги и фильтры снимите флажок Показать общие итоги для строк.
  3. Выберите Fail и в «Инструменты сводной таблицы» > «Параметры» > «Инструменты» — «Формулы», «Вычисляемый элемент»… добавьте «Среднее значение» для имени: и в «Формула»: поместите =Pass/(Pass +Fail ).
  4. Выберите «Среднее» и «Сортировка от А до Я».
  5. В строке под общим итогом подсчитайте средневзвешенный проходной балл для каждой средней даты.
  6. Установите цвет шрифта для строки общего итога, чтобы он соответствовал цвету заливки.
  7. Скрыть столбцы Pass/Fail и строку Row Labels.
  8. Измените ячейки на Pass Rate и Date.
  9. Формат по размеру.
person pnuts    schedule 11.12.2013
comment
Привет! К сожалению, все не так просто — мои столбцы — «Установка», «Дата» и «Результат», результат — либо P, либо F. К сожалению, это часть кода тестовых установок, поэтому я не могу это контролировать. Я пытался использовать COUNT (Pass) в вычисляемом поле, чтобы получить общее количество, и COUNTIF (Pass = P), чтобы дать мне количество проходов, а затем использовать другое вычисляемое поле, чтобы дать мне мой процент... Однако COUNT(Pass) всегда дает мне результат 1, а COUNTIF не кажется допустимым в вычисляемом поле. - person Tom; 11.12.2013

На самом деле мне удалось это сделать, изменив мой SQL-запрос, чтобы предоставить предложенные входные данные. После того, как я изменил код, все стало довольно просто — я просто создал поле расчета для каждой установки, чтобы разделить количество проходов на количество тестов, а также среднее из двух, а затем отформатировал их в процентах. На случай, если это кому-нибудь пригодится, я включил свой SQL ниже. Наверное, очень коряво, но дает правильный ответ!

SELECT CONVERT (Date, [Stamp]) AS Date
  ,SUM(case when Pass='P' and TestRig = 'Rig 1' THEN 1 ELSE 0 END) AS R1Passes
  ,SUM(case when Pass='P' and TestRig = 'Rig 2' THEN 1 ELSE 0 END) AS R2Passes
  ,SUM(case when Pass IN ('P', 'F') and TestRig = 'Rig 1' THEN 1 ELSE 0 END) AS R1Tests
  ,SUM(case when Pass IN ('P', 'F') and TestRig = 'Rig 2' THEN 1 ELSE 0 END) AS R2Tests
FROM [dbase].[dbo].[tbl_Results]
where Stamp > '2013-12-01'
  and TestName = 'Finished'
GROUP BY CONVERT (Date, [Stamp])
person Tom    schedule 17.12.2013