2013-07-25 83 views
1
Sub compareRange() 
     If Worksheets("Sheet1").Range("A14:C14") = Worksheets("Sheet1").Range("A15:C15") Then 
      MsgBox "Two Ranges are the same" 
     End If 
     'MsgBox "Two Ranges are the same" 
    End Sub 

給出A14:C14(1,2,3)和A15:C15(1,2,3)具有相同的值,我得到類型不匹配錯誤。 我想如何比較這樣的兩個範圍?比較具有相同數量的單元格的兩個行範圍

回答

0

你只是不能這樣做。這不是範圍工作。您需要使用某種for循環遍歷範圍中的每個單元格。您可能想要添加檢查,以便發現單元格數量不相等的情況(顯然,如果是這種情況,則範圍不同)。

+0

我不相信這是真的。你可以比較範圍。 @alex,你是否在我的答案中嘗試過數組公式? –

+0

這是一個公式。我回復他使用純粹的VBA。否則,您的解決方案只是另一種解決方案 – ApplePie

+0

我還包括一個純粹的VBA選項作爲我的答案的一部分。 –

3

你不需要VBA。嘗試這種陣列式:

=AND(EXACT(A14:C14,A15:C15)) 

式中鍵入後​​,使用Ctrl鍵 + + 輸入將其設置爲數組公式。

如果範圍相等則返回TRUE,否則返回FALSE。

如果你需要做到這一點使用VBA,試試這個:

Sub CompareTwoRanges() 
    Dim compareRanges As Boolean 
    compareRanges = ActiveSheet.Evaluate("=AND(EXACT(A14:C14,A15:C15))") 
End Sub 

編輯: 我不喜歡ActiveSheet,我不喜歡硬編碼的範圍,所以這裏是一個更完整的片段:

Sub CompareTwoRanges() 
    Dim wb As Workbook 
    Dim ws1 As Worksheet 
    Dim ws2 As Worksheet 
    Dim rng1 As Range 
    Dim rng2 As Range 

    Set wb = ThisWorkbook 
    Set ws1 = wb.Sheets("Sheet1") 
    Set ws2 = wb.Sheets("Sheet2") 
    Set rng1 = ws1.Range("A14:C14") 
    Set rng2 = ws2.Range("N3:P3") 

    If rangesAreEqual(rng1, rng2, ws1, ws2) Then 
     MsgBox "The ranges are equal." 
    Else 
     MsgBox "Sorry. The ranges are NOT equal." 
    End If 
End Sub 

Function rangesAreEqual(rng1 As Range, rng2 As Range, _ 
    ws1 As Worksheet, ws2 As Worksheet) As Boolean 
    ' booleans default to false 
    ' verify ranges have same dimensions 
    If rng1.Columns.Count <> rng2.Columns.Count Then Exit Function 
    If rng1.Rows.Count <> rng2.Rows.Count Then Exit Function 

    ' ranges are the same size. are their contents equal? 
    rangesAreEqual = ws1.Evaluate("=AND(EXACT(" & ws1.Name & "!" & _ 
      rng1.Address & "," & ws2.Name & "!" & rng2.Address & "))") 
End Function 
+0

這只是我試圖編程的一個宏的一小部分,所以我需要將它編碼爲反對幾個步驟task.Thanks該方法雖然。@ HeadofCatering – user2600411

+0

我編輯我的答案,包括VBA版本。讓我知道這是否適合你。 –

+0

我使用兩行不同的工作表中的行,每行都有多行。我想弄清楚比較行應該駐留的循環。行可能不在同一行級別,但我只需要比較A到C列上的單元格進行每次比較。 @HeadofCatering – user2600411

相關問題