Excel - 在数据透视表

时间:2017-07-31 11:28:42

标签: excel pivot-table

希望你能帮助我。

我有一个包含11列的表,第一个是日期,接下来的9个是唯一识别数据的方式,第11个是一定数量的钱。

我在数据透视表中所做的是根据标识符(行)和日期(列)之一显示添加的数量。

在数据透视表中,一切都很顺利。今天虽然我被告知我的源表中的金额实际上是从今年年初开始累计的。

我的意思是该表中有重复的条目,如果我在1月份有一个带有9个标识符的条目,并且在2月和3月有相同的条目,那么2月份的值实际上是(2月 - 1月)和3月(3月至2月)。

我可以通过唯一标识符在我的源表中添加一列来识别和计算实际数量,但我想知道是否有方法直接在数据透视表中这样做?

谢谢!

编辑: 这是简化版本的屏幕截图(只有两个标识符) 在第四列中是我拥有的数量,在第五列中我需要计算的实际数量,只有两列作为标识符非常容易。 这里的目标是底部的数据透视表显示“实际”数量,而不必在源表中创建新列。 My example table

1 个答案:

答案 0 :(得分:1)

您可以使用计算项目来执行此操作。但它很麻烦。

计算项只是数据透视表字段可以采用的另一项。它是根据同一领域的其他项目定义的。例如,字段Date的值可能为Jan17Feb17等。可以将名为Difference的新计算项添加到Date字段中定义为=Feb17-Jan17。只要Difference字段用于提供行标签或列标签,并且在数据透视表主体中为其显示的值将等于{{的相应值,则会显示此新Date项1}}少于Feb17的那些。

下面的讨论基于(松散地)在问题所附图片中的数据透视表上。

无法在分组字段上计算计算项目,因此需要取消组合数据透视表中的Jan17字段。这将导致字段中的项目以与源数据相同的Date格式显示。将这些更改为dd/mm/yyyy的自定义格式可以更轻松地使用它们。在英语(而不是法语)中,使用此格式显示为mmmyyJan17等。

要将新的计算项添加到Feb17字段,请选择此字段中的任何项目,然后通过功能区找到Date选项。这已经在Excel的各个版本中发生了变化,在Excel 2010中,它可以通过" Fields,Items& amp;设置" "数据透视表工具/选项"的按钮;功能区的标签。在以后的版本中,它通过"计算"同一个标签的按钮。将出现一个对话框,如下图所示。

Inset Calculated Item dialog

在名称:框中插入合适的名称,例如Calculated Item,然后在公式:框中输入Feb17X。点击"添加"然后"好的"。标记为=IF(Feb17=0,0,Feb17-Jan17)的新Date项目将显示在数据透视表中,并将分别针对项目A,B和C显示20,0和0的值。

Feb17X是二月份的累计Feb17X项。 Date是必需的,因为尽管IF值是累积的,但只有当月中出现新的Amount时,它们才会出现在源数据中(例如,项目B和部门IS的数据显示四月和六月但不是五月。)

类似的累积Amount项可以在其他月份以相同的方式定义。

3月份,Date被定义为  Mar17X 并在=IF(Mar17=0,0,Mar17-(Jan17+Feb17X))字段中添加了一个新的Mar17X项。不幸的是,它分别对项目A,B和C显示-28,0和0的值。要显示正确的值,必须将Date字段添加到数据透视表中的行标签(Department字段下方),然后使用"折叠整个字段&# 34;阻止Project字段的详细信息显示的操作。

剩余月份的计算项目按预期添加 - 六月的计算项目为Department且具有公式 Jun17X

=IF(Jun17=0,0,Jun17-(Jan17+Feb17X+Mar17X+Apr17X+May17X))字段定义新项目后,会在数据透视表中应用过滤器以移除累积项目,即DateFeb17,{{1} },Mar17Apr17。这会导致数据透视表显示累计值的总和,如下所示。

Screenshot

几点:

  1. 通过将May17字段的数字格式设置为Jun17
  2. ,可以阻止数据透视表中的零显示
  3. 在较大的问题中,每个Amount#Amount和另外8个字段值定义,数据透视表的行标签需要包含{{1}和所有8个属性字段。后8个字段需要"崩溃"显示器。
  4. 添加一个已填充的Date列非常简单得多 源数据范围而不是使用计算项目方法集 在这里。按9个属性(Project对源数据进行排序 首先是剩余的8)然后由Project完成任务 积累很容易。只需比较一行中的9个属性 与前一行:如果两者之间的值不变 行,从当前行中减去前一行Amount, 否则保持当前行Project不变。