0 And Dat-6ren">
gpt4 book ai didi

excel - If Else 有多个条件

转载 作者:行者123 更新时间:2023-12-04 21:29:08 25 4
gpt4 key购买 nike

我正在尝试实现三个条件和四个结果:

enter image description here

Col I 中的值由主工作表中的数据验证列表驱动。

我尝试了以下方法:

If DataImport.Cells(i, "E").Value <> 0 And DataImport.Cells(i, "F").Value <> 0 And DataImport.Cells(i, "I").Value = "Hide" Then
ThisWorkbook.Worksheets(ws(index)).Visible = False
ElseIf DataImport.Cells(i, "E").Value = 0 And DataImport.Cells(i, "F").Value = 0 And DataImport.Cells(i, "I").Value = "Hide" Then
ThisWorkbook.Worksheets(ws(index)).Visible = False
ElseIf DataImport.Cells(i, "E").Value <> 0 And DataImport.Cells(i, "F").Value <> 0 And DataImport.Cells(i, "I").Value = "Unhide" Then
ThisWorkbook.Worksheets(ws(index)).Visible = True
ElseIf DataImport.Cells(i, "E").Value = 0 And DataImport.Cells(i, "F").Value = 0 And DataImport.Cells(i, "I").Value = "Unhide" Then
ThisWorkbook.Worksheets(ws(index)).Visible = False

该过程忽略了我的第三个条件,并且仍然在 I 列中显示带有“隐藏”的相关工作表。

最佳答案

把事情简单化。当我处理复杂的逻辑时,我首先设置变量,以便我的代码更易于阅读。

Option Explicit
Dim isNotZero as Boolean
Dim isToHide as Boolean
isNotZero = DataImport.Cells(i, "E").Value <> 0 And DataImport.Cells(i, "F").Value <> 0
isToHide = DataImport.Cells(i, "I").Value = "Hide"

现在,我们可以在您的代码中使用这些变量(请记住正确缩进,以便代码逻辑可见)
If isNotZero And isToHide Then
ThisWorkbook.Worksheets(ws(index)).Visible = False
ElseIf DataImport.Cells(i, "E").Value = 0 And DataImport.Cells(i, "F").Value = 0 And isToHide Then
ThisWorkbook.Worksheets(ws(index)).Visible = False
ElseIf isNotZero And Not isToHide Then
ThisWorkbook.Worksheets(ws(index)).Visible = True
ElseIf DataImport.Cells(i, "E").Value = 0 And DataImport.Cells(i, "F").Value = 0 And Not isToHide Then
ThisWorkbook.Worksheets(ws(index)).Visible = False
End iF

你注意到我是如何留下一些代码的。 (A <> 0 AND B <> 0) 与 (A = 0 AND B = 0) 不相反。您正在寻找的是(A = 0 B = 0)。一个简单的真值表将证明这一点,我将把它留给自己作为练习。

可是等等。

你上面的逻辑/真相表是一件好事。它显示了 A 和 C 的模式(A 和 B 是 E 和 F 中的非零值)。它还显示了一个简单的模式。
ThisWorkbook.Worksheets(ws(index)).Visible = isNotZero and Not isToHide

如你所见,我已经替换了你的复杂 If … Then...用一行代码。让我们对 isToHide 进行最后一次调整,您的最终代码如下。
Option Explicit
Dim isNotZero as Boolean
Dim isToHide as Boolean
isNotZero = DataImport.Cells(i, "E").Value <> 0 And DataImport.Cells(i, "F").Value <> 0
isToExpose = DataImport.Cells(i, "I").Value = "Unhide"
ThisWorkbook.Worksheets(ws(index)).Visible = isNotZero and isToExpose
' Purely because I prefer the positive statements
' And now your code is easier to read and self-commenting.

这里的教训
  • 做真值表。
  • 识别模式。
  • 使用 bool 变量简化看似复杂的目标代码。
  • 一次采取合乎逻辑的一步。
  • 关于excel - If Else 有多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59133395/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com