Excel多级数组公式与部分字符串匹配以对结果单元格求和
一天多来,我一直在努力解决这个问题,但运气不好。我以前成功地使用过SUMIFS、INDEX、MATCH、COUNTIF、“--”等数组函数,我不是新手,但也不是这方面的专家。我似乎无法正确地将它们编织在一起,而且很可能走上了一条完全错误的道路 基本上,我正在尝试从多个电子表格中聚合数据,需要将各种项目(行)映射成一种规范形式进行汇总 这里的图片显示了我的任务的一个代表性的简化版本。本示例电子表格(最终…、映射、数据集1、数据集2)上的每个“区域”实际上位于不同的电子表格中,每个xlsx中有多个表格,有50-150行 请注意,B列中的名称非常任意(这意味着并非所有P1都有“x”模式,如图中所示x1、x2等。不依赖名称中的任何模式,映射表中的x、y、z是数据集中B列中名称的子字符串(不区分大小写,尾随匹配) 在图中,最终结果表(手动求和)是我想要通过(数组)公式计算的:一个公式将是理想的(因为我有许多从中提取月度数据的电子表格,所以我无法随时修改,但如果需要,可以创建一个临时电子表格,以便打开辅助列或辅助行) 以下是过程-对于最终结果表中的每个名称(B3-B5),我想将其组件中的名称相加如下:Excel多级数组公式与部分字符串匹配以对结果单元格求和,excel,array-formulas,Excel,Array Formulas,一天多来,我一直在努力解决这个问题,但运气不好。我以前成功地使用过SUMIFS、INDEX、MATCH、COUNTIF、“--”等数组函数,我不是新手,但也不是这方面的专家。我似乎无法正确地将它们编织在一起,而且很可能走上了一条完全错误的道路 基本上,我正在尝试从多个电子表格中聚合数据,需要将各种项目(行)映射成一种规范形式进行汇总 这里的图片显示了我的任务的一个代表性的简化版本。本示例电子表格(最终…、映射、数据集1、数据集2)上的每个“区域”实际上位于不同的电子表格中,每个xlsx中有多个表
提前感谢。这是一个很好的挑战!您是否愿意将所有表(数据集1、数据集2…)放入一个电子表格中,以便我们每个月只参考一个范围 这里有一个解决方案(希望是一个很好的起点)-数组公式(Ctrl+Shift+Enter):
=SUMPRODUCT(IFERROR(IF(转置)(IF($B3=$C$10:$C$15,$B$10:$B$15,”)))=右($B$18:$B$36,2),C$18:C$36,0),0))
这里有一个解决方案,不必求助于讨厌的(imo)CSE公式
= SUMPRODUCT($C$19:$F$26*(COUNTIFS($B$10:$B$15, RIGHT($B$19:$B$26,2),$C$10:$C$15,$B3)>0)*($C$18:$F$18=C$2))
+
SUMPRODUCT($C$31:$F$35*(COUNTIFS($B$10:$B$15, RIGHT($B$31:$B$35,2),$C$10:$C$15,$B3)>0)*($C$30:$F$30=C$2))
每个数据集都有一个SUMPRODUCT
。如果可能,最好将所有数据集放在一个带有列的表中,以确定它是哪个数据集的一部分
它的工作方式是获取数据集中的每个值,然后将其乘以该p代码的映射表中是否出现最右边的2个字符,再乘以该值是否在正确的月份。因此,如果其中一个条件为false,则返回0。然后返回总和
根据OP评论进行更新
如果X、Y、Z代码并非始终为2位,但第一部分始终为8位,则可以轻松修改:
RIGHT($B$19:$B$26,2)
将是:
RIGHT($B$19:$B$26,LEN($B$19:$B$26)-8)
为第一个数据集生成公式:
=SUMPRODUCT($C$19:$F$26*(COUNTIFS($B$10:$B$15, RIGHT($B$19:$B$26,LEN($B$19:$B$26)-8),$C$10:$C$15,$B3)>0)*($C$18:$F$18=C$2))
您可以修改其他数据集,只需将它们添加到一起。太棒了,两个都很简单。都迫不及待地想尝试一下(我会花几个小时)。但有两个“问题”需要注意:从右到右,x/y/z不是2个字符,实际上是可变长度,而是前缀(100-),等等)在原始数据中正好是8个字符。此外,按照Gravitate的建议将所有数据合并到一个xls或“表”中并不实际。但我可以在公式的每个单元格中对文件进行不同的引用(2018和2019的月份不是过多的列)。我的意思不是说“简单”。优雅可能是一个更好的词。无论如何,希望尽快尝试这些。嘿@retd111很抱歉有一点耽搁,圣诞节期间可能会很吸引人!:)对于正确,我认为你可以尝试使用
正确($B$18:$B$36,LEN($B$B$18:$B$B$36)-9)
而不是正确($B$18:$B$36,2)
(9=8字符加“-”符号的前缀)。我想知道这个解决方案是否有用(祈祷吧!)。这个公式非常有效。是的,我已经使用了正确的调整。有很多。一个怪癖是,我有2-4个不相交的范围,所以有很多SUMPRODUCTS(例如SP()+SP()+SP()),这是很多重复。但是,我没有抱怨。两个公式都很好。两个解决方案都可以在测试电子表格上使用。我将很快处理主数据集。但非常感谢。如果出现问题,我将返回。