Excel 如果单元格值>;(大于)功能无法为单元格着色

Excel 如果单元格值>;(大于)功能无法为单元格着色,excel,vba,Excel,Vba,我当前使用的代码 Dim iRowCq As Range Set iRowCq = Range("B2:DJ26") For Each Cell In iRowCq If Cell.Value > "0.3" or cell.value > 0.3 Then Cell.Interior.Color = RGB(0, 255, 0) End If Next 我要将大于0.3的单元格着色为绿色。然而,尽管99%的细胞可以工作,但有时也有细胞大于0.

我当前使用的代码

Dim iRowCq As Range
Set iRowCq = Range("B2:DJ26")

For Each Cell In iRowCq

    If Cell.Value > "0.3" or cell.value > 0.3 Then
        Cell.Interior.Color = RGB(0, 255, 0)
    End If

Next
我要将大于0.3的单元格着色为绿色。然而,尽管99%的细胞可以工作,但有时也有细胞大于0.3且不着色。我甚至试着把数据四舍五入到小数点后两位,但在这之前是行不通的。有人能帮忙吗


对于大于/小于的比较,不能将字符串和数字进行类似的比较。字符串作为一个字符串可能不大于
“0.3”
,但作为一个数字,它的排序总是高于
0.3
。`字符串和数字比较的组合可能在严格等于的基础上工作

取字符串或混合数的数值,并将其用于同余运算

Dim iRowCq As Range Set iRowCq = Range("B2:DJ26")

For Each Cell In iRowCq

    If val(Cell.Value) > 0.3 Then
         Cell.Interior.Color = RGB(0, 255, 0)
    End If

Next

对于大于/小于比较,不能将字符串和数字进行类似的组合比较。字符串作为一个字符串可能不大于
“0.3”
,但作为一个数字,它的排序总是高于
0.3
。`字符串和数字比较的组合可能在严格等于的基础上工作

取字符串或混合数的数值,并将其用于同余运算

Dim iRowCq As Range Set iRowCq = Range("B2:DJ26")

For Each Cell In iRowCq

    If val(Cell.Value) > 0.3 Then
         Cell.Interior.Color = RGB(0, 255, 0)
    End If

Next

您可以尝试以下方法:

Option Explicit

Sub test1()

    Dim rng As Range, cell As Range

    With ThisWorkbook.Worksheets("Sheet1") '<- It s better practise to specify the worksheet

        Set rng = .Range("B2:DJ26") '<- This range does not cover your whole spreadsheet. As i can see from the image the last column IS NOT "D" BUT "S" and the last row IS NOT 26 BUT 25. Setting range to *.Range("B2:SJ25")* we cover your range.

        For Each cell In rng

            If CDec(cell.Value) > 0.3 Then '<- Convert the cell value into decimal in order to compare with decimal
                cell.Interior.Color = RGB(0, 255, 0)
            End If

        Next

    End With

End Sub
选项显式
子测试1()
变暗rng作为范围,单元格作为范围

使用此工作簿.工作表(“Sheet1”)您可以尝试以下操作:

Option Explicit

Sub test1()

    Dim rng As Range, cell As Range

    With ThisWorkbook.Worksheets("Sheet1") '<- It s better practise to specify the worksheet

        Set rng = .Range("B2:DJ26") '<- This range does not cover your whole spreadsheet. As i can see from the image the last column IS NOT "D" BUT "S" and the last row IS NOT 26 BUT 25. Setting range to *.Range("B2:SJ25")* we cover your range.

        For Each cell In rng

            If CDec(cell.Value) > 0.3 Then '<- Convert the cell value into decimal in order to compare with decimal
                cell.Interior.Color = RGB(0, 255, 0)
            End If

        Next

    End With

End Sub
选项显式
子测试1()
变暗rng作为范围,单元格作为范围

有了这个工作簿。工作表(“Sheet1”)”你为什么要发明条件格式?可以用非常简单的方法完成,无需VBA:


你为什么要发明条件格式?可以用非常简单的方法完成,无需VBA:


我认为您需要查看未变绿的单元格中实际存储的值。我特别关注的是类似于
0.2999
的值,但是它显示为
0.3
。是否存在覆盖恶意单元格的条件格式?对于行为不正常的单元格,在“公式栏”中显示的值是多少?我认为您需要查看不变绿的单元格中实际存储的值。我特别关注的是类似于
0.2999
的值,但是它显示为
0.3
。是否存在覆盖流氓单元格的条件格式?对于行为不正常的单元格,“公式栏”中显示的值是多少?如果单元格包含数值,我会认为OP的代码会起作用。在提供备选方案之前,您是否测试了OP的代码?如果OP的单元格中有
“0.3”
,则其数字的字母顺序始终大于
0.3
。您认为单元格值会根据比较的内容从文本变为数字;事实并非如此。单元格值要么是文本,要么是数字。如果是文本,op的两倍比较的后一部分将始终为真。这只是代码的最新版本,因为我没有想法。我试过用数字表示,也试过用字符串表示,但都不起作用。没有着色的单元格值是带有许多小数的小数字(例如0.6512442834805)。“您认为单元格值从文本变为数字”-不,我没有。我认为OP在所有单元格中都有数字,但他们惊慌失措,添加了字符串比较来尝试调试。我想这就是为什么建议将a作为原始问题的一部分。它倾向于避免响应区域中的“打鼹鼠”游戏以及扩展的注释交换。如果单元格中包含数值,我会认为OP的代码会起作用。在提供备选方案之前,您是否测试了OP的代码?如果OP的单元格中有
“0.3”
,则其数字的字母顺序始终大于
0.3
。您认为单元格值会根据比较的内容从文本变为数字;事实并非如此。单元格值要么是文本,要么是数字。如果是文本,op的两倍比较的后一部分将始终为真。这只是代码的最新版本,因为我没有想法。我试过用数字表示,也试过用字符串表示,但都不起作用。没有着色的单元格值是带有许多小数的小数字(例如0.6512442834805)。“您认为单元格值从文本变为数字”-不,我没有。我认为OP在所有单元格中都有数字,但他们惊慌失措,添加了字符串比较来尝试调试。我想这就是为什么建议将a作为原始问题的一部分。它倾向于避免在回应区进行打鼹鼠游戏,也避免扩大评论交流。。