我需要它来处理 7 月份在加拿大或墨西哥的订单,金额超过 1,000 美元。我尝试使用的公式是:
=IF(OR(A2="Canada","Mexico", IF(C2>1000, "Ship by Air", IF(MONTH(B2=7, "Ship by Air", "Ship by Ground")))
我不知道如何用所有这些信息来写它。
答案1
OR
需要每个部分都是自己的布尔表达式:
OR(A2="Canada","Mexico"
应该:
OR(A2="Canada",A2="Mexico")
或者
OR(A2={"Canada","Mexico"})
和
MONTH(B2
缺少)
所以:
=IF(OR(A2={"Canada","Mexico"}), IF(C2>1000, "Ship by Air", IF(MONTH(B2)=7, "Ship by Air", "Ship by Ground")))
另外,您缺少外部 IF 上的 FALSE,这可能是您想要的,但我倾向于添加它,以便我的公式更具可读性:
=IF(OR(A2={"Canada","Mexico"}), IF(C2>1000, "Ship by Air", IF(MONTH(B2)=7, "Ship by Air", "Ship by Ground")),FALSE)
但我们可以将里面的两个结合起来,因为输出在真实情况下是相同的:
=IF(OR(A2={"Canada","Mexico"}), IF(OR(C2>1000, MONTH(B2)=7), "Ship by Air", "Ship by Ground"),FALSE)
Ship by Air
编辑:如果以下任何一项为真,则将返回:
- A2 等于“加拿大”或“墨西哥”
- C2 > 1000
- B2 月份是 7 月
:
=IF(OR(A2={"Canada","Mexico"},C2>1000, MONTH(B2)=7), "Ship by Air", "Ship by Ground")
Ship by Air
编辑2:如果以下所有条件都为真,则将返回此结果:
- A2 等于“加拿大”或“墨西哥”
- C2 > 1000
- B2 月份是 7 月
:
=IF(AND(OR(A2={"Canada","Mexico"}),C2>1000, MONTH(B2)=7), "Ship by Air", "Ship by Ground")
答案2
你已经有了一个很好的开始;你的公式是你想要实现的“伪代码”。你只需要为 Excel 构建它。
第一个问题是函数使用的因数需要用括号括起来,这样 Excel 才能知道它们的开始和结束位置。您的第一个 OR 没有右括号;MONTH 函数也是如此。
第二个问题是 OR 需要包含完整条件的选择。Excel 不处理与列表的比较,至少在您使用的非数组格式中是这样。
此外,第一个 IF 不包含当 OR 为假时显示的结果,因此您可能需要添加它。
因此公式应如下所示:
=IF(OR(A2="Canada",A2="Mexico"), IF(C2>1000, "Ship by Air", IF(MONTH(B2)=7, "Ship by Air", "Ship by Ground")),"Not Canada or Mexico")
答案3
数一下括号:您有五个左括号和三个右括号。但计数必须匹配。
您可以看到表达式的正确缩进存在问题:
=IF(
OR(
A2="Canada","Mexico",
IF(
C2>1000, "Ship by Air",
IF(
MONTH(
B2=7, "Ship by Air", "Ship by Ground"
)
)
)
// ---------------- Here your expression ends
) // missing
) // missing
我标记了两个缺失的右括号。你想用哪个表达式来结束,)
取决于你想实现的逻辑。