使用部分string的Sumif和vlookup

所以基本上我有一个数据表和一个映射表。 映射表通过查看部分string来确定每个类别属于哪个类。 然后我计算出属于同一class级的总价值。

虽然我知道我可以通过简单地添加在我的数据表上的查找/索引匹配列来做到这一点。 有没有一种方法可以完成使用单一公式的输出?

原因是原始数据表包含一堆vba代码依赖的其他列,因此如果可能的话,我不想修改该表。

数据表:

Name Values dog1 2 dog2 3 dog3 4 cat1 1 cat2 2 trout1 5 trout2 6 trout3 7 

映射表:

 Category Class dog pet trout fish cat pet 

输出:

 Class Total pet 12 

它可以通过数组公式工作,但我不会说这是优雅的。

列出不同类别值的相当标准的公式

 =IFERROR(INDEX(E$2:$E$10,MATCH(0,COUNTIF($G1:$G$1,$E$2:INDEX($E$2:$E$10,COUNTA($E$2:$E$10))),0)),"") 

然后,将每个不同类别值的SUMIF映射到其对应的类别值中,并包含在SUM中以获得所有类别的总和

 =IF(G2="","",SUM(SUMIF($A$2:$A$10,"*"&IF($E$2:$E$10=G2,$D$2:$D$10,"~~~")&"*",$B$2:$B$10))) 

在这里输入图像说明

试试这个场景:

用Index / Match查找类的类别,追加一个通配符并把它放到Sumif函数中。 单元格H3中的公式如下,复制下来。

 =SUMIF($A$2:$A$7,INDEX($D$3:$D$4,MATCH(G3,$E$3:$E$4,0))&"*",$B$2:$B$7) 

在这里输入图像说明

在评论之后编辑:如果多个类别被映射到相同的类别,则公式解决scheme不再可行。 相反,考虑使用Power Pivot和Excel数据模型以及表之间的关系。 您将需要以下表格:

  • 具有名称和值的初始数据input表
  • 将名称映射到类别的表格
  • 将类映射到类的表

然后,您可以将这些表添加到Power Pivot中的数据模型并定义关系。 在这里输入图像说明 在这里输入图像说明

现在,您可以使用Category / Class表中的类来构build一个数据透视表,该表将总计初始数据input表中的值。

Power Pivot是Excel 2010到2013的免费插件,并且内置到Excel 2016的企业版本中。

在这里输入图像说明