【问题标题】:Logical formula in Excel - Help neededExcel 中的逻辑公式 - 需要帮助
【发布时间】:2013-11-12 09:23:07
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你玩过=IF(...)吗?
  • 我试过这样的 =IF(UPPER(B1)="LOW", "Yes",IF(UPPER(C1)="please fill", "No", "Yes" )) 但不起作用:(
  • 应该很接近。但它应该是LOWER(C1) 而不是UPPER(C1)

标签: excel excel-formula


【解决方案1】:

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

=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 而不是嵌套的 @ 987654324@s.

【讨论】:

    【解决方案2】:

    我不太擅长公式,但这样就可以了

    =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
    

    例子

    【讨论】:

    • 抱歉这个愚蠢的问题,但是一旦我进入模块,我该如何使用它。 excel不太好:(
    • @largan 您只需进入单元格 A1 并输入 =CheckIt() 并按 Return/Enter
    • @largan 你需要打开 VBE(Visual Basic 编辑器 ALT + F11 ),右键单击项目资源管理器并插入 - 模块。然后将函数代码复制粘贴到那里
    • 谢谢我已经设法插入并使用它......但不知何故逻辑不起作用。它保持在“否”并且不改变值
    • 嗯,这很奇怪...实际上它有效,但只有当我单击字段 (A) 并插入 =CheckIt()... 然后如果我更改 B 或 C 中的值它没有改变。如果我再次去 A 并重新提交 =CheckIt() 它然后穿上正确的值
    【解决方案3】:

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

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

    【讨论】:

    • +1 比我的公式短得多:P 就像我说的我不擅长构建公式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2022-11-16
    • 2020-08-02
    • 1970-01-01
    • 2023-03-08
    • 2014-07-08
    相关资源
    最近更新 更多