1

我需要有关 excel 公式的帮助。我正在尝试实现以下行为:

  • 公式在单元格A中
  • 在单元格 B 中,我们可以有 3 个可能的值 - 低、中或高

因此,如果单元格 B 的值等于低,则在 A 单元格中,值为“是”如果单元格 B 中的值等于中或高,则公式应检查单元格 C 是否已填充并且其内容是否不同于“请填写”,否则为“空白”。如果为真,则单元格 A 为“是”,如果不是,则为“否”。

如果单元格 B 的值为空白,则单元格 A 也为“否”。

4

3 回答 3

2

以下公式在文本上复制了您询问的逻辑

=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/ ORs 而不是嵌套IF的 s。

于 2013-11-12T10:28:34.887 回答
1

我对公式不是很好,但这会做

=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

例子

在此处输入图像描述

于 2013-11-12T10:09:23.460 回答
1

IF、OR、ISBLANK 和 UPPER 的组合应该可以解决您的问题。

=IF(UPPER(B2)="LOW","Yes",IF(OR(UPPER(C2)="PLEASE FILL IN",ISBLANK(C2)),"Yes","No"))

公式示例

于 2013-11-12T10:39:16.523 回答