【问题标题】:simple if condition not working in excel如果条件在 excel 中不起作用,则很简单
【发布时间】:2013-06-26 06:25:17
【问题描述】:
For Row = row_start To l1 + row_start
    For Column = col_start To l2 + col_start
        If Cells(Row, Column).Value = Cells(2, Column).Value Or Cells(Row, Column).Value = Cells(Row, 2).Value Then
            Cells(Row, Column).Interior.ColorIndex = 3
        End If
    Next Column
Next Row

这是我正在执行的宏的一部分。我的 Row 变量从 5 运行到 33,Column 变量从 6 运行到 34。我在 AA6 和 AA2 中的值为 824.6。同样,AB7 和 AB2 中的 824.8。 AC8 和 AC2 中的 825 值。等等.. 但是,只有 AC8 被涂成红色,其他的则没有。我不明白错误在哪里。任何人都可以帮忙吗?提前致谢!

【问题讨论】:

  • ...您是否使用 F8 单步执行了宏?
  • 是的,我做到了.. 代码只是跳过了 if 条件,就好像它不是真的一样..
  • ...当它跳过并且您希望它进入 IF 时,标准的值是什么 - 您是否使用“立即”窗口进行检查?
  • 两者显示相同的值..
  • ....如果您在电子表格中使用类似 =A1=A2 的公式来比较您认为具有相同值的这两个单元格,会发生什么情况 - 它是 True 还是 False?

标签: excel if-statement for-loop vba


【解决方案1】:

我不明白您的代码中的 l1l2 是什么?

作为测试,请用硬编码值替换并尝试以下操作:

Sub xxx()

Dim row
Dim column
Dim row_start As Integer
Dim col_start As Integer
row_start = 5
col_start = 6

For row = row_start To 33
    For column = col_start To 34
        If Cells(row, column).Value = Cells(2, column).Value Or Cells(row, column).Value = Cells(row, 2).Value Then
            Cells(row, column).Interior.ColorIndex = 3
        End If
    Next column
Next row

End Sub

找出发生了什么的最简单方法是将光标放在代码中并点击F8,然后不断点击F8,逐步完成循环。将以下两个表达式添加到您的 Watch 窗口,以便您可以监控它们的值(不带引号)并希望找到不符合您的条件的单元格:

  1. “单元格(行,列).Value = 单元格(2,列).Value”
  2. “单元格(行,列).Value = 单元格(行,2).Value”

【讨论】:

  • 代码在数字被硬编码时有效。数字是通过将一组数字除以 5 生成的。但是,对于不同的输入。代码标记所有正确的单元格,除了当小数部分为 0.4..
【解决方案2】:

这些值是完全您所说的,还是显示为四舍五入?

Value 属性将使用单元格中的实际值,而不是显示的值。因此824.6824.5999 格式为一位小数不同值。

最好的办法是放置一个消息框(或某处的公式),其中包含可疑单元格之间的差异。

例如,在下面的表格中,A1 为824.6,B1 的格式为带一位小数的数字并设置为824.5999。 C1 为一般格式,设置为=a1-b1:

      A       B       C
1   824.6   824.6   1E-04

至于如何解决这个问题(如果是问题的话),我相信单元格的 Text 属性是屏幕上显示的内容。如果你使用它,它应该考虑到单元格格式等等。

你也可以使用类似的东西:

MsgBox "diff = " & CStr(Range("b1").Value - Range("a1").Value)

除此之外,我建议只需使用 F8(进入)单步执行宏并将单元格添加到您的监视列表中,以便您查看它们是什么。

【讨论】:

    猜你喜欢
    • 2019-04-01
    • 2014-02-21
    • 2018-10-12
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    相关资源
    最近更新 更多