【问题标题】:Can I get relational data into an Excel Pivot Table我可以将关系数据放入 Excel 数据透视表吗
【发布时间】:2009-10-12 00:03:29
【问题描述】:

我有一张表(我们以葡萄酒为例),上面列出了我酒窖中的每一瓶葡萄酒、我买它的时间、我付了多少钱等。

有一列用逗号分隔的标签描述葡萄酒,例如“Fruity, White”。

我已经根据该数据创建了一个数据透视表,并将描述作为过滤列。但是我不能用“白色”过滤它。我必须找到所有包含“白色”的描述,例如“干、白”、“白、脆”等。

由于具有 RDBMS 背景,我的自然倾向是将标签放在自己的表中,以葡萄酒行为键,这样每个葡萄酒行就有零个或多个标签行。

我到底如何使用它来过滤葡萄酒行?

【问题讨论】:

  • 在这种情况下,Excel 绝对是错误的工作工具。
  • 不幸的是,真正的报告与葡萄酒无关。这是给老板的,他可以理解数据透视表。我可以花时间编写另一个交互式工具来呈现相同的数据,然后按需将其导入 Excel 以进行其他报告、绘图等。或者我可以询问 SO,希望它可以在 Excel 中完成并继续其他工作.

标签: excel relational-database pivot-table


【解决方案1】:

是的,您可以在 Excel 中执行此操作,并且描述字段可以保留为“干白”等,因为您不需要拆分逗号分隔的值。

假设表格源包含一个用于描述的文本列、一个用于值的数字列和一个用于购买年份的数字列。

您的枢轴设置如下

  • 字段:描述、价值和购买年份。

  • 列标签:购买年份

  • 行标签:说明
  • 值的总和:值的总和

行标签上有一个下拉标签过滤器 - 单击它,应该有一个选择标签过滤器的选项。选择此项,然后选择包含。您可以输入“白色”,这将选择所有包含白色的描述,例如“干,白”,“白,脆”。过滤器包括 ?表示单个字符, * 表示任何一系列字符。

对于“begins with”和“ends with”以及否定有类似的标签过滤器。

我在 Excel 2007 中尝试过,它在 2003 年也应该可以工作。我认为在 Excel 2003 中你甚至可以组合过滤器,例如包含“白色”并且不包含“干”,但在 2007 年我找不到这样做的方法。

【讨论】:

    【解决方案2】:

    如果我说的很明显,请原谅我,但您在这里遇到问题的原因是描述列不在 1NF 中,并且 Excel 数据透视界面不够灵活,无法进行基于模式的搜索。

    最简单的选择是将 CSV 标准化为一系列列,每列代表一个属性 - 一列代表葡萄酒颜色,一列代表甜度,一列代表原产国等等 - 并将过滤器应用于多列。但是,如果(正如您对问题的评论所暗示的)葡萄酒是您真正问题的隐喻,那么您可能没有机会重新审视源数据的设计。

    另一种可能性可能是使用宏(或数据库查询 - 我不清楚您是否已经实现了标签系统)根据数据透视表的源表预过滤输入数据标记您要搜索的值,然后根据该数据重新刷新数据透视表。

    第三种可能性是this question 中使用的 VBA,看起来它将自定义过滤数据透视表的可见行。

    【讨论】:

      【解决方案3】:

      =IF(ISERR(FIND("WHITE",UPPER(B5))),0,1)

      创建一个额外的列并添加一个公式。这有2个技巧。一种是使用upper 在描述列中搜索WHITE - 以克服excel find 区分大小写的事实。二是如果字符串不存在,它会返回一个值错误 - 因此 iserr 将允许您捕获它并在此示例中返回 0(如果不存在)或 1(如果存在)。你可以用白色和空白代替 1 和 0。

      【讨论】:

        【解决方案4】:

        您可以编写一个循环遍历数据的脚本,并为描述列中的每个逗号分隔项添加新行。这将允许数据透视表更好地过滤。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-26
          • 2012-01-23
          • 2018-09-22
          • 1970-01-01
          • 2014-01-20
          • 2010-10-14
          • 2020-08-22
          相关资源
          最近更新 更多