2013-10-16 46 views
0

我想比較2個不同工作表中的2列(每張表中的同一列),然後比較它們是增加還是減少,然後將單元格顏色爲紅色或綠色以指示增加還是減少。然而,我的公式不起作用... 我試圖使用activecell和活動單元偏移量,它的工作,但我似乎無法引用它在另一個工作表中的同一工作表上的列? 不過是我的(unworking)代碼...如何循環和比較2個工作表中的2列和參考增加或減少?

Sub test3() 
     Range("A1").Select 
Do 
    If ActiveWorkbook.worksheets(「Sheet1!」).Cell(ActiveCell) > ActiveWorkbook.worksheets(「Sheet2!」).Cell(「A1」) Then 
     ActiveCell.Interior.Color = RGB(255, 0, 0) 
    ElseIf ActiveWorkbook.worksheets(「Sheet1!」).Cell(ActiveCell) < ActiveWorkbook.worksheets(「Sheet2!」).Cell(「A1」) Then 
     ActiveCell.Interior.Color = RGB(0, 255, 0) 
    Else 

    End If 
     ActiveCell.Offset(1, 0).Select 
Loop Until IsEmpty(ActiveCell) 
End Sub 
+1

我覺得你的問題是在比較中第二單元始終是「A1」。 – ForkandBeard

+0

除了硬編碼的'A1',我不會循環你正在做的事情,你可以簡化所有'ActiveWorkbook'和'ActiveCell'引用。我在下面提供了另一種方法 –

回答

1

試試這個,只需要列設置爲任何你需要的列索引。

Dim row As Integer 
Dim column As Integer 

row = 1 
column = 1 

ActiveWorkbook.Worksheets("Sheet1!").Cells.Interior.Color = RGB(255, 255, 255) 

Do While ActiveWorkbook.Worksheets("Sheet1!").Cells(row, column) <> "" 

    If ActiveWorkbook.Worksheets("Sheet1!").Cells(row, column) <> ActiveWorkbook.Worksheets("Sheet2!").Cells(row, column) Then 
     If ActiveWorkbook.Worksheets("Sheet1!").Cells(row, column) > ActiveWorkbook.Worksheets("Sheet2!").Cells(row, column) Then 
      ActiveWorkbook.Worksheets("Sheet1!").Cells(row, column).Interior.Color = RGB(255, 0, 0) 
     Else 
      ActiveWorkbook.Worksheets("Sheet1!").Cells(row, column).Interior.Color = RGB(0, 255, 0) 
     End If 
    End If 
    row = row + 1 
Loop 
+0

非常感謝您花時間幫助!但是有一個錯誤說運行時錯誤9下標超出範圍?對此有任何想法? –

+0

什麼行代碼? – ForkandBeard

+0

我不知道 - 我怎麼找出它與哪一行有關? –

0

這將工作 - 只是改變colorRng參考,以滿足您的需求:

Sub ColorCode() 
    Dim cl As Range, colorRng As Range 

    Set colorRng = Worksheets(1).Range("A1:A10") 

    For Each cl In colorRng 
     If cl > Worksheets(2).Cells(cl.Row, cl.Column) Then 
      cl.Interior.Color = RGB(255, 0, 0) 
     Else 
      cl.Interior.Color = RGB(0, 255, 0) 
     End If 
    Next cl 
End Sub