我需要有关 excel 公式的帮助。我正在尝试实现以下行为:
- 公式在单元格A中
- 在单元格 B 中,我们可以有 3 个可能的值 - 低、中或高
因此,如果单元格 B 的值等于低,则在 A 单元格中,值为“是”如果单元格 B 中的值等于中或高,则公式应检查单元格 C 是否已填充并且其内容是否不同于“请填写”,否则为“空白”。如果为真,则单元格 A 为“是”,如果不是,则为“否”。
如果单元格 B 的值为空白,则单元格 A 也为“否”。
我需要有关 excel 公式的帮助。我正在尝试实现以下行为:
因此,如果单元格 B 的值等于低,则在 A 单元格中,值为“是”如果单元格 B 中的值等于中或高,则公式应检查单元格 C 是否已填充并且其内容是否不同于“请填写”,否则为“空白”。如果为真,则单元格 A 为“是”,如果不是,则为“否”。
如果单元格 B 的值为空白,则单元格 A 也为“否”。
以下公式在文本上复制了您询问的逻辑
=IF(B1="Low","Yes",IF(OR(B1="Medium",B1="High"),IF(OR(ISBLANK(C1),C1<>"please fill in"),"Yes","No"),IF(ISBLANK(B1),"No","Undefined")))
请注意,您在定义中遗漏了一种情况(给出“未定义”)。这可能不是故意的。
如果实际上不打算使用“未定义”,还请注意,您只有两个可能的输出,因此可以用不同的测试替换条件,用单个条件组合AND
/ OR
s 而不是嵌套IF
的 s。
我对公式不是很好,但这会做
=IF(LEN(B1)>0,IF(B1="low","Yes",IF(B1="medium",IF(C1<>"please fill in",IF(C1<>"","Yes","No"),"No"),IF(B1="high",IF(B1<>"please fill in",IF(LEN(C1)>0,"Yes","No"),"No"),"No"))),"No")
如果你想要一个 VBA 函数(但要求你分别在每个单元格中输入公式,然后将其粘贴在一个模块中,然后在 A 列中使用它
Function CheckIt() As String
Dim r As Long
r = ActiveCell.Row
If Range("B" & r) = "low" Then
CheckIt = "Yes"
Else
If (Range("B" & r) = "medium" Or Range("B" & r) = "high") Then
If ((Range("C" & r) <> "please fill in") And (Not IsEmpty(Range("C" & r)))) Then
CheckIt = "Yes"
Else
CheckIt = "No"
End If
Else
CheckIt = "No"
End If
End If
End Function
例子
IF、OR、ISBLANK 和 UPPER 的组合应该可以解决您的问题。
=IF(UPPER(B2)="LOW","Yes",IF(OR(UPPER(C2)="PLEASE FILL IN",ISBLANK(C2)),"Yes","No"))