如果"如果......"如何为excel中的单元格着色?条件是真的

时间:2014-04-27 14:49:44

标签: excel excel-vba vba

如果是sheet1,我想知道如何为第3张的A1着色!A1 = sheet2!A1。我想检查表1和表1中从A1到A1000的单元格。 2,并将结果着色为第3页。

感谢。

2 个答案:

答案 0 :(得分:0)

对于早于Excel 2010的版本,您需要使用命名范围来引用其他工作表。

一个选项:在Sheet2上创建一个引用单元格A1到A1000的命名范围。然后使用此公式的条件格式

=A1=INDEX(CompareRange,ROW(A1))

如果您不想使用命名范围,可以使用Sheet1上的辅助列使用公式

=A1=Sheet2!A1

然后将条件格式基于该列,其中结果将为TRUE或FALSE。

enter image description here

答案 1 :(得分:-1)

不幸的是,内置的条件格式不允许您根据其他工作表或工作簿中的单元格格式化单元格。因此,手头的任务确实需要使用VBA。下面附有解决方案外观的示例。您需要将formatAsDesired的内容替换为您需要的实际格式。

Sub compareMyRanges()
'this sub executes the code below for your actual ranges in your actual project
    compareRange Sheets("Sheet1").Range("A1:A1000"), Sheets("Sheet2").Range("A1:A1000"), Sheets("Sheet3").Range("A1:A1000")
End Sub

Sub compareRange(inRangeOne As Range, inRangeTwo As Range, outRange As Range)

    For Each Row In outRange.Rows
        If inRangeOne.Cells(Row.Row, 1).Value = inRangeTwo.Cells(Row.Row, 1).Value Then
        'if there is a match between column 1 and column 2, formatAsDesired 
        'is called for the respective cell in column three   
        formatAsDesired outRange.Cells(Row.Row, 1)
        End If
    Next Row

End Sub

Sub formatAsDesired(formatRange As Range)
'formats Range with green fill. Replace the contents of this sub with whatever 
'formatting or transformation you require for the cells that match.
    With formatRange.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End Sub