如何做一个if和ISBLANK嵌套公式,如果不为空白则显示文本

时间:2018-09-16 08:21:58

标签: if-statement excel-formula formula equation excel-2016

我正在尝试找出如何嵌套IFISBLANK公式来显示文本(如果不是空白的话)。

到目前为止,我有这个:

=If(Not(ISBLANK(SCB!A8)),”X”,If(Not(ISBLANK(Voda!A8),”Y”,If(Not(ISBLANK(Fixnetix!A8),”A”,If(Not(ISBLANK(IOW!A8),”B”,”No open cases")

但是它没有用,我正尝试从其他4个工作簿中提取数据,这些工作簿将不断变化。

我的理论是:

  • 如果X有数据,则显示,但如果X没有数据,则移至Y

  • 如果Y有数据,则显示,但如果Y没有数据,则移动到A

  • 如果A有数据,则显示,但如果A没有数据,则移动到B

  • 如果B有数据,则显示,但B没有数据,则显示“无未结案件”

这些是我拥有的变量

  • (SCB!A8)
  • (Voda!A8)
  • (Fixnetix!A8)
  • (IOW!A8)
  • “没有未结案件”

2 个答案:

答案 0 :(得分:0)

尝试中存在一些语法问题。

这是我认为可以解决的问题:

=IF(NOT(ISBLANK(SCB!A8)),”X”,IF(NOT(ISBLANK(Voda!A8)),"A",IF(NOT(ISBLANK(Fixnetix!A8)),"Y",IF(NOT(ISBLANK(IOW!A8)),"B","No OpenCases"))))

基本上,您缺少几个括号和一个右引号。特别是,您的内部NOT(ISBLANK())的几种组合都缺少第二个结束语。

答案 1 :(得分:0)

在某些时候,随着公式长度的增加,对这些复杂的操作使用常规公式会适得其反,并充满错误。

一旦达到一定程度的复杂性,我倾向于切换到用户定义的函数,以便我可以简化公式并将复杂性封装在一个地方。

以下功能将满足您的需求:

Function FirstMatch(DefaultVal As String, ParamArray Params() As Variant) As String
    Application.Volatile (True)
    Dim i As Integer
    FirstMatch = DefaultVal
    For i = LBound(Params) To UBound(Params) Step 2
        If Range(Params(i)).Value <> "" Then
            FirstMatch = Params(i + 1)
            Exit For
        End If
    Next
End Function

将函数放入工作表后,调用它的公式将变得更加简单:

=FirstMatch("No open cases", "SCB!A8", "X", "Voda!A8", "Y", "Fixnetix!A8", "A", "IOW!A8", "B")

它的工作原理很简单,只需将返回值设置为默认值,然后依次处理每对字符串。如果该对中的第一个不为空,则将返回值设置为第二个并返回。否则它将一直继续下去,直到找到匹配项或用尽了可能性。

如果用完了,则返回默认返回值。


请记住,存在许多改进该代码的可能性,例如使空白检测更加智能(允许使用任何空格而不是需要完全为空的单元格),或者在参数计数增加时引发某种显式错误。是错误的(没有使用相应值的悬挂单元格),但是显示的代码应该是一个好的开始。