我试图根据列中的相邻(上一列)文本值找到列中某些值的平均值。例如,在下面的例子中,我想找到西海岸城市的平均结果。到目前为止,这是我得到的公式(根据示例,将放在C12中)。粗体部分代表我正在努力的部分。也许整个公式都是错误的?
= AVERAGE(IF(“la”&“sf”&“sea”&“por”in b3:b10 ),c3:c10))
答案 0 :(得分:2)
不幸的是,Excel中没有WITHIN功能。幸运的是,我们可以使用数组函数的强大功能。
在数组上下文
中=IF($B$3:$B$10={"la","sf","sea","por"}, ...)
将检查$ B $ 3的值是否相等" la",然后是true,等于" sf",然后是true等等然后如果$ B的值$ 4等于" la",然后是true,等于" sf",然后是真等等,依此类推,直到$ 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,有时可能不直接需要的结果。
所以以下内容将起作用: