【问题标题】:Excel pivot table that counts non-numeric data?计算非数字数据的Excel数据透视表?
【发布时间】:2022-05-07 06:05:15
【问题描述】:

我正在帮助一位同事解决问题,但我自己也遇到了一些困难。在完成一组课程后,他从学生回答的调查中收到一个 CSV 文件,他希望生成报告,显示每个问题中每个类别的回答数量(即#同意、#强烈同意等)。

CSV 文件的格式类似于:

DateTime     School     Class     Question 1        Question 2        Question 3     ... etc ...
========     ======     =====     ==========        ==========        ==========
1/1/2012       A          1       Agree             Strongly Agree    Disagree
1/1/2012       A          1       Disagree          Agree             Strongly Disagree
1/1/2012       A          2       Agree             Strongly Agree    Slightly Disagree
1/1/2012       A          1       Agree             Agree             Disagree
1/1/2012       A          2       Disagree          Disagree          Disagree
... etc 8,000 rows ...

他想要一份类似这样的报告:

School     Class     Q1 Agree     Q1 Disagree    ...    Q1 Strongly Agree  ...
======     =====     ========     ===========          =================
  A          1          2             1                         0
  A          2          1             1                         0
... etc ...

显然,我正在查看数据透视表,但我遇到了如何定义数据透视表的问题。我不是 Excel 专家,但当我们尝试各种选项时,我们得出的结果基本上是毫无意义的。

是否可以设置一个数据透视表以有意义的方式提供这些数据?计算非数值实例并按学校和班级对计数进行分组?什么是一个好的(易于重复的)策略来实现这一点?

感谢您的帮助,非常感谢。

(我们使用的是 Office 2007)

【问题讨论】:

  • AFAIK Excel 数据透视表不适用于非数值,这与 Access Crosstab 查询不同。

标签: excel pivot


【解决方案1】:

选择您的数据范围作为数据透视表。

  1. Question 1ClassSchool 拖到行标签框。
  2. Question 1Question 2Question 3 拖到“值”框。
  3. 如果没有显示“Count of Question 1”,请单击Value Field Settings. 上的向下箭头
  4. Summarize by 选项卡中,选择计数。
  5. 必要时重复。
  6. 在另一个工作表上,链接到特定的数据透视表单元格,以您希望的任何格式显示数据。

编辑:我附上了一张图片作为视觉辅助。

http://i.imgur.com/2Emw3.jpg

如果您有任何问题,请告诉我。

【讨论】:

  • 我认为这是他试图做的,但失败了,因为它只计算你有多少答案——而不是什么答案
  • 哦,我明白了。对不起。无法像您的屏幕截图那样完美地安排它,但它可以工作。只是出于好奇:有没有办法在那里也有空答案?
  • @Johanness 公式的 iferror(f(x),0) 部分将 0 分配给空答案。
【解决方案2】:

用连接学校、班级和答案的公式填写第二张表。 该表随后将如下所示:

Q1                Q2                           Q3
=================================================================
A1Q1:Agree        A1Q2:Strongly Agree          A1Q3:Disagree
A1Q1:Disagree     A1Q2:Agree                   A1Q3:Strongly Disagree
A2Q1:Agree        A2Q2:Strongly Agree          A2Q3:Slightly Disagree

其中 A1 表示学校 A 1 级。 您甚至可以使用 VLookup 将文本替换为数字

您可以通过将此公式添加到虚拟表中的单元格 D3 来获得:

 =sourcetable!$B3&sourcetable!$C3&D$1&":"&sourcetable!D3

然后将其复制到每个单元格。

现在您所要做的就是创建一个这样的结果表:

                             Q1           Q1                  Q1
School       Class         Agree       Disagree       Strongly Disagree   
========================================================================
A            1             formula

公式在哪里

=countif(dummytable!C3:z999,$A4&B4&C$1&":"&C$2)

对所有单元格重复此公式。

第一部分的作用和作用应该很清楚。在生产级应用程序中,我会将文本(同意/不同意)替换为数字(Google for VLookup),当数据中有错字时您会看到。

第二部分计算字符串的所有出现次数(在本例中为 A1Q1:Agree)。这应该可以解决问题。 如果要发布它,最好将结果“复制:粘贴值”到新表中...

您可以按原样重复使用虚拟表和结果表。只需将新数据放入源表...

【讨论】:

  • 您能稍微扩展一下这种方法吗?我不太确定我跟着你。谢谢。
【解决方案3】:

问题是您的数据已全部准备好部分旋转。 理想情况下,格式为:

DateTime     School     Class     Question        Answer        
========     ======     =====     ==========      ==========        
1/1/2012       A          1       Question 1      Strongly Agree    
1/1/2012       A          1       Question 2      Agree             

这种格式有助于更好地使用数据透视表。 Here is instructions on doing an unpivot with Excel 2016

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多