【问题标题】:If statement with multiple text arguments inside rangeIf 语句在范围内具有多个文本参数
【发布时间】:2014-12-15 04:30:51
【问题描述】:

我试图根据与之配对的相邻(上一列)文本值来查找列内某些值的平均值。例如,在以下情况下,我想找到西海岸城市得分的平均值。到目前为止,这是我得到的公式(根据示例,将放在 C12 中)。粗体部分代表我正在努力的部分。也许整个公式是错误的?

=AVERAGE(IF("la" & "sf" & "sea" & "por" inside b3:b10 ),c3:c10))

【问题讨论】:

    标签: excel if-statement average


    【解决方案1】:

    很遗憾,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 有时可能不是直接需要的结果。

    因此以下将起作用:

    【讨论】:

    • 如果我要添加第二个条件,我想获得西南城市的平均值。假设我插入另一列,在城市名称旁边放置“南”或“北”。如果我们坚持我的例子,我们只会得到洛杉矶和旧金山的平均值。西雅图和波特兰(以及所有其他城市)将被排除在外。因此平均值为 4.5
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多