如何执行嵌套的if和ISBLANK公式,如果文本不为空则显示文本



我正在尝试研究如何进行嵌套IF,并ISBLANK公式来显示文本(如果它不是空白(。

到目前为止,我有这个:

=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 没有数据,则显示"无未结案例">

这些是我拥有的变量

  • (渣打!答8(
  • (沃达!答8(
  • (修复!答8(
  • (哎呀!答8(
  • "没有未结案件">

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

以下是我相信可以解决它的方法:

=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())组合缺少第二个结束报价。

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

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

以下函数将执行您需要的操作:

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")

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

如果确实用完了可能性,则返回默认返回值。


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

相关内容

  • 没有找到相关文章

最新更新