条件格式设置为单元格变量?

时间:2013-08-06 14:49:16

标签: excel excel-vba vba

我将尝试尽可能多地理解这一点,我现在已经在VBA工作了整整3天,这是我实习期间的一个项目的一部分。 / p>

简而言之,我有一组数字,如果这个数字超出12-70范围,那么这是一个不好的数据点,不应该包含在其他链接的计算中。但是,数字需要保留在那里,我不能直接更改其他链接的公式。

所以,我的想法是将单元格更改为“N / A”,但将该单元格的显示返回到原始编号(如果可能的话)。这是我的代码(功能齐全):

'This will take all questionable data and remove it from calculation
Dim i As Variant
Dim j As Variant

For Each j In Array(6, 7, 10)
    For i = 3 To 500
        If Cells(i,j) = "N/A" Or Cells(i,j) = "" Then

        ElseIf Cells(i,j) < 12 Or Cells(i,j) > 70 Then
            Cells(i, 11) = Cells(i,j)
            Cells(i,j).NumberFormat = "0;0;0;[Red]""Bad Data"""
            Cells(i,j) = "N/A"
        End If
    Next i
Next j

因此,截至目前,这将原始数字重写到原始位置旁边的第11列,将值更改为N / A,然后显示为“错误数据”。

有没有办法改变“坏数据”显示以显示原始数字,同时将N / A维持为实际单元格值?

1 个答案:

答案 0 :(得分:1)

在这里!请参阅注释以获得解释希望有所帮助!

Sub set_Cell_Variable()
    'This will take all questionable data and remove it from calculation
    Dim i As Variant
    Dim j As Variant

    ' Two new variables 
    Dim strTemp As String
    Const QUOTE = """" 

    For Each j In Array(6, 7, 10)
        For i = 3 To 500
            If Cells(i, j) = "N/A" Or Cells(i, j) = "" Then

            ElseIf Cells(i, j) < 12 Or Cells(i, j) > 70 Then
                Cells(i, 11) = Cells(i, j)
                ' Store the cell value as String. 
                ' That way it can go into NumberFormat
                strTemp = CStr(Cells(i, j).Value)
                ' Add it to NumberFormat dynamically
                Cells(i, j).NumberFormat = "0;0;0;[Red]" & QUOTE & strTemp & QUOTE
                Cells(i, j) = "N/A"
            End If
        Next i
    Next j
End Sub