我可以将关系数据导入Excel数据透视表

时间:2009-10-12 00:03:29

标签: excel relational-database pivot-table

我有一张床单(让我们以葡萄酒为例)列出我酒窖里的每一瓶葡萄酒,当我买它时,付了多少等等。

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

我已根据该数据创建了一个数据透视表,其描述为过滤列。但是我无法通过“白色”过滤它。我必须找到包含“白色”的所有描述,如“干,白”,“白色,清脆”等。

从RDBMS背景来看,我的自然倾向是将标签放在他们自己的表中,并且对着葡萄酒行,因此每个葡萄酒行的标签行数为零或更多。

我怎么能用它来过滤葡萄酒行呢?

4 个答案:

答案 0 :(得分:1)

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

让我们说Table源包含Description的文本列,Value的数字列和Year Bought的数字列。

使用以下

设置您的支点
  • 字段:描述,价值和年份。

  • 列标签:年份购买

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

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

有类似的标签过滤器,用“开头”和“结束”以及否定。

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

答案 1 :(得分:0)

请原谅我,如果我说的是显而易见的,但你在这里遇到问题的原因是说明栏不在1NF中,并且Excel数据透视界面不够灵活,不允许基于模式的搜索。 / p>

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

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

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

答案 2 :(得分:0)

= IF(ISERR(FIND( “白色”,UPPER(B5))),0,1)

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

答案 3 :(得分:0)

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