使用模糊匹配动态创建数据透视表

时间:2017-12-12 23:34:10

标签: excel vba excel-vba

因此,我不断地以新的和不同的格式提供数据。我正在努力使我的工作标准化数据以便于使用,如果我设法说服数据标准化的权力,这个问题就完全没有实际意义了。在那之前,我有以下问题:

我以各种方式获取数据。有时我的总销售额称为总销售额。有时折扣前的总销售额,折扣前的总销售额,Gross_Sales等。折扣,扣除,豁免金额等形成另一栏。等等等等。我希望能够做到以下几点:

1)找出我想要的列,
2)将这些列转换为数据透视表。

对于第1部分,我有两个选项,我想知道是否还有:第一个是使用Microsoft的模糊匹配插件来帮助我匹配。我有一个单独的标签,专门用于模糊匹配我需要的每一列。第二个是生成所有变体的长列表,并测试每个变体直到找到命中,分配它,然后继续测试下一个变体。

第二部分是将所有这些转变为数据透视表 - 到目前为止我所拥有的资源是https://www.thespreadsheetguru.com/blog/2014/9/27/vba-guide-excel-pivot-tablesHow to Create a Pivot Table in VBA

有更好的方法吗?还有另一种方式吗?

编辑:稍微好一点的方法 - 获取数据列,将它们放入表中,并将所有内容从该表中移出 - 它不需要重新创建数据透视表,只需要移动数据。

1 个答案:

答案 0 :(得分:2)

遇到同样的问题,我使用了两种方法的混合。

我的数据包含一堆被拒绝的X射线图像的日志,拒绝原因是一个自由文本字段。我的解决方案是创建一个表,其中第一列包含我想要的输出类别,然后每个后续列包含不同的变体。

例如,一行可能有(第一列/输出第一个条目):

  

定位,POS,定位误差,患者定位

请注意,这些都彼此完全不同。模糊匹配进入的地方 - 它用于捕获围绕那些其他列的所有较小的差异和误导。当模糊匹配部分确定给定的原因与列的条目匹配时,然后用表中第1列的适当的所需输出原因替换它。在我的例子中,一个推理错误的原因。 [sic]将匹配第3列(定位错误),然后转换为定位。

然后根据需要在剩余数据上重复冲洗。这种方法非常有用,并且在帮助标准化我的数据方面非常灵活。它的计算成本也更高,但是我猜你只需要运行匹配部分。

关于这样做的实际机制 - 我使用2010,所以没有内置功能。我在临时工作表上运行模糊匹配代码,直到找到最佳百分比匹配,然后覆盖实际源数据。