尊敬的Stackoverflow成员,
由于某些MrExcel成员(link)的出色帮助,我创建了以下SUMPRODUCT公式。公式的目标是根据四个条件从大型查询表中选择结果:CATEGORY(类别),VALUE1(数字),VALUE2(数字),VALUE3(数字)。
输入数据
查找表如下所示: LOOKUPTABLE
希望的结果
我要制作的表如下所示: WISHED RESULT
当前解决方案
作为结果的公式,我使用以下内容(例如,左上角的结果单元格):
B8 = SUMPRODUCT(MAX(
(LOOKUPTABLE[CATEGORY]=$A8)
*(LOOKUPTABLE[VALUEFROM1]<=IF(B$2="";LOOKUPTABLE[VALUEFROM1];B$2))
*(LOOKUPTABLE[VALUETO1]>=IF(B$2="";LOOKUPTABLE[VALUETO1];B$2))
*(LOOKUPTABLE[VALUEFROM2]<=IF(B$3="";LOOKUPTABLE[VALUEFROM2];B$3))
*(LOOKUPTABLE[VALUETO2]>=IF(B$3="";LOOKUPTABLE[VALUETO2];B$3))
*(LOOKUPTABLE[VALUEFROM3]<=IF(B$4="";LOOKUPTABLE[VALUEFROM3];B$4))
*(LOOKUPTABLE[VALUETO3]>=IF(B$4="";LOOKUPTABLE[VALUETO3];B$4))
*(LOOKUPTABLE[RESULT])))
(此公式还说明了VALUE1或VALUE2或VALUE3可能为空的特殊情况)
这将产生以下结果: FINAL RESULT
大表是否有更好的解决方案?例如。数组公式?
这很好用,但是一旦我向结果表中添加了更多行(通过添加类别DP)并且向表中添加了更多列(约40个),并且我向查找表中添加了更多行(至30,000) ,这些公式变慢。因此,我想为整个结果表编写一个数组公式。如果这不可能,那么我很高兴每个类别可以有一个数组公式。
我尝试过的方法(失败的方式)
我尝试使用以下数组公式,但由于它返回N / A,因此无法正常运行:
{=SUMPRODUCT(MAX(
(Table35[CATEGORY]=$A8:$A10)
*(Table35[VALUEFROM1]<=IF(B$2:F$2="";Table35[VALUEFROM1];B$2:F$2))
*(Table35[VALUETO1]>=IF(B$2:F$2="";Table35[VALUETO1];B$2:F$2))
*(Table35[VALUEFROM2]<=IF(B$3:F$3="";Table35[VALUEFROM2];B$3:F$3))
*(Table35[VALUETO2]>=IF(B$3:F$3="";Table35[VALUETO2];B$3:F$3))
*(Table35[VALUEFROM3]<=IF(B$4:F$4="";Table35[VALUEFROM3];B$4:F$4))
*(Table35[VALUETO3]>=IF(B$4:F$4="";Table35[VALUETO3];B$4:F$4))
*(Table35[RESULT])))}
此外,我为每个类别尝试了以下数组公式,但是它不起作用,因为它为类别的整个行提供了相同的结果:
{=SUMPRODUCT(MAX(
(LOOKUPTABLE[CATEGORY]=$A8)
*(LOOKUPTABLE[VALUEFROM1]<=IF(B$2:F$2="";LOOKUPTABLE[VALUEFROM1];B$2:F$2))
*(LOOKUPTABLE[VALUETO1]>=IF(B$2:F$2="";LOOKUPTABLE[VALUETO1];B$2:F$2))
*(LOOKUPTABLE[VALUEFROM2]<=IF(B$3:F$3="";LOOKUPTABLE[VALUEFROM2];B$3:F$3))
*(LOOKUPTABLE[VALUETO2]>=IF(B$3:F$3="";LOOKUPTABLE[VALUETO2];B$3:F$3))
*(LOOKUPTABLE[VALUEFROM3]<=IF(B$4:F$4="";LOOKUPTABLE[VALUEFROM3];B$4:F$4))
*(LOOKUPTABLE[VALUETO3]>=IF(B$4:F$4="";LOOKUPTABLE[VALUETO3];B$4:F$4))
*(LOOKUPTABLE[RESULT])))}
您有建议吗?
您有什么想法,我该如何解决这个问题?
非常感谢您的任何建议!