很遗憾,Excel 中没有 WITHIN 函数。幸运的是,我们可以使用数组函数的强大功能。
在数组上下文中
=IF($B$3:$B$10={"la","sf","sea","por"}, ...)
将检查 $B$3 的值是否等于“la”,然后为真,等于“sf”,然后为真,依此类推,然后如果 $B$4 的值等于“la”,则为真,等于 "sf",然后是 true,依此类推,直到 $B$10。
所以
{=AVERAGE(IF($B$3:$B$10={"la","sf","sea","por"},$C$3:$C$10))}
会做你想做的。
注意,数组字面量 {"la","sf","sea","por"} 必须是行向量,因为 $B$3:$B$10 是列向量。
公式必须是数组公式。输入不带大括号的公式,最后按[CTRL]+[Shift]+[Enter]。大括号应该会自动出现。
为了获得更大的灵活性,我将在某处分别列出西海岸和东海岸的州,如我的示例所示。请注意,状态列表必须是行向量,因为 $B$3:$B$10 是列向量。如果这不可能,则必须使用 TRANSPOSE 来转置它们。
要在数组上下文中的 IF 中有多个条件,我们必须注意,AND() / OR() 在数组上下文中大多不会按预期工作。为了避免这种情况,我们可以使用以下技巧。 TRUE * TRUE 结果为 1,但 FALSE * TRUE 结果为 0。因此,布尔值相乘(比较的结果)可用于 AND(所有布尔值都必须为 TRUE)。 TRUE + TRUE 结果为 2,FALSE + TRUE 结果为 1,但 FALSE + FALSE 结果为 0。因此,布尔值的加法(比较结果)可用于 OR(至少一个布尔值必须为 TRUE)。我们应该记住,TRUE + TRUE = 2 有时可能不是直接需要的结果。
因此以下将起作用: