我认为我有一个很好的。
我需要在多个条件上执行 MIN-IF(和 MAX-IF),其中需要近似匹配。我知道如何按照IF
所述使用多个语句的乘积在多个条件上执行 MIN IF这里,但我需要使用近似匹配/类似匹配,并且IF
不接受"*" & criteria & "*"
类似函数的语法COUNTIF, VLOOKUP,...
。我能够使用方法处理 MAX-IF ISNUMBER SEARCH
。
我希望可以发布我的虚拟数据的图片,但我没有资格这样做。所以我会尽力描述它。
A 列包含第 2 行到第 14 行中第一个条件的数据。
B 列包含第 2:14 行中第二个条件的数据。
C 列包含我想要确定第 2 行到第 14 行近似匹配的值MIN
。
我在单元格中有条件 1 F1
,在单元格中有条件 2。F2
我对 MAX IF 的公式如下:
{=MAX(IF(ISNUMBER(SEARCH(F1,A2:A14)) * ISNUMBER(SEARCH(F2,B2:B14)), ISNUMBER(SEARCH(F1,A2:A14)) * ISNUMBER(SEARCH(F2,B2:B14)))*C2:C14)}
我试图用MIN
而不是 来精确复制这一点MAX
,但它只是返回0
。
我目前正在使用 Excel 20113,并且愿意使用工作表函数解决方案或基于 VBA 的解决方案。对此有什么看法?
谢谢。
答案1
您可以将最大数组公式缩短为:
=MAX(IF((ISNUMBER(SEARCH(F1,A2:A14))) * (ISNUMBER(SEARCH(F2,B2:B14))),C2:C14))
接下来尝试一下这个:
=MIN(IF((ISNUMBER(SEARCH(F1,A2:A14))) * (ISNUMBER(SEARCH(F2,B2:B14))),C2:C14))
如果您拥有 2010 或更高版本,则不需要 CSE 数组公式,请使用以下命令:
最大限度:
=AGGREGATE(14,6,C2:C14/((ISNUMBER(SEARCH(F1,A2:A14)))*(ISNUMBER(SEARCH(F2,B2:B14)))),1)
最小值:
=AGGREGATE(15,6,C2:C14/((ISNUMBER(SEARCH(F1,A2:A14)))*(ISNUMBER(SEARCH(F2,B2:B14)))),1)
现在有趣的部分是,如果您拥有最新版本的 365 或正在使用在线办公,那么您可以使用其新的 MINIFS() 和 MAXIFS():
=MAXIFS(C2:C14,A2:A14,"*" & F1 & "*",B2:B14,"*" & F2 & "*")
=MINIFS(C2:C14,A2:A14,"*" & F1 & "*",B2:B14,"*" & F2 & "*")