Excel Pivot取决于标头值

时间:2016-08-01 09:07:19

标签: excel pivot-table

我正在尝试在excel中创建一个数据透视表,下面是我的方案。 我有一个包含5列的Excel工作表,其中第1,2,3列有3个不同的人名(person1,person2,person3)作为标题,它的相应值将是“是”或“否”。第4列具有金额,第5列将具有每个人的份额。根据前三列中存在的值(是/否)计算份额,我使用的公式为

      (D1/COUNTIFS(A1:C1,"Yes")) 
      i.e., dividing the (amount/ count( of persons having Yes value))

 Person1    Person2 Person3 Amount  PerHeadShare
 Yes        Yes     No       200         100
 Yes        Yes     Yes      300         100
 No         Yes     No       200         200
 No         No      Yes      100         100

现在我的要求是创建一个包含两列

的数据透视表
  • column1应该有3行,其中包含Person1,Person2和Person3

  • column2应该具有每个人所拥有的份额之和

    Name          Sum
    Person1       200
    Person2       400
    Person3       200
    

2 个答案:

答案 0 :(得分:1)

如果您有使用SQL的经验,可以尝试以下方法:

数据标签>来自Access>将文件过滤器更改为All Files (*.*)并选择您的Excel文件>打开>好的>选择数据透视表,新工作表,然后选择属性...> “定义”选项卡>命令类型:SQL并在命令文本中输入:

SELECT Name, Sum( PerHeadShare ) As [Sum] FROM (
    SELECT 'Person1' As Name, Person1 AS y, * FROM [Sheet1$] UNION ALL 
    SELECT 'Person2' As Name, Person2 AS y, * FROM [Sheet1$] UNION ALL 
    SELECT 'Person3' As Name, Person3 AS y, * FROM [Sheet1$] ) 
WHERE y = 'Yes'
GROUP BY Name

确定>好的>将Name字段拖到Row Labels,将Sum字段拖到Values,然后重命名数据透视表中的标题。

在命令文本中,“Sheet1”必须更改为数据所在的工作表的名称,或者不包含$ [named Range]的命名范围,或者工作表中的特定范围{ {1}}

如果您使用Excel 2010或更高版本,使用Power Query或PowerPivot可以更容易一些(我有Excel 2007,所以我无法尝试)。

答案 1 :(得分:0)

我不确定这是不是你想要的。它仍然是很多手工工作。在我看来,您当前的数据结构不太适合数据透视表,但我可能错了,并希望学习如何使用数据透视表...

  1. 复制名称的前3个字符串并粘贴到其他地方
  2. 然后在A8中输入公式并展开到其余字段: enter image description here

  3. 将范围A7:C11转换为值

  4. 将其粘贴到其他位置 enter image description here

  5. 在附加栏中总结