2014-12-10 5 views
-1

У меня есть два листа в моем документе excel. Листы содержат таблицу, которая используется в моем проекте.Я хочу сравнить два листа в excel

В обоих столбцах имя столбца одинаково. Но данные в этой колонке отличаются.

Я хочу сравнить листы и выделить изменения в Sheet1. как достичь этого Пожалуйста, помогите мне ...

+0

, к сожалению, этот вопрос не по теме на StackOverflow. Вы получите больше внимания и лучших ответов на superuser.com –

+1

Или взгляните на [это] (http://stackoverflow.com/questions/18255186/compare-2-data-sheets-in-excel) Вопрос StackOverflow , –

+0

@ jay_t55 Тема на какой основе? – pnuts

ответ

0
var _Excel = new Microsoft.Office.Interop.Excel.Application(); 
Workbook wb = _Excel.Workbooks.Open(@"D:\src\Printtime\Client\Tests\TerminalTests\bin\Debug\file.xlsx"); 
Worksheet ws1 = wb.Worksheets["Sheet1"]; 
Worksheet ws2 = wb.Worksheets["Sheet2"]; 

for (int i = 0; i < ws1.UsedRange.Columns.Count; i++) 
    for (int j = 1; j < ws1.UsedRange.Rows.Count; j++) 
    { 
     Range range1 = (Range)ws1.Cells[j, i]; 
     Range range2 = (Range)ws2.Cells[j, i]; 
     if (range1.Text != range2.Text) 
      range1.Interior.Color = Color.Firebrick; 
    } 

Посмотрите на этот маленький пример. Если вам нужно что-то еще, вы можете найти столько информации о Excel Interop о stackoverflow.

+0

это javascript – Chinna

+0

@ user1051571 Это C# .NET :) –

0

Попробуйте это:

Option Explicit 

Dim PrevVal As Variant 

Private Sub Worksheet_Activate() 
    If Selection.Rows.Count = 1 And Selection.Columns.Count = 1 Then 
     PrevVal = Selection.Value 
    Else 
     PrevVal = Selection 
    End If 
End Sub 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    On Error GoTo ExitGraceFully 
    If Selection.Rows.Count = 1 And Selection.Columns.Count = 1 Then 
     PrevVal = Selection.Value 
    Else 
     PrevVal = Selection 
    End If 
ExitGraceFully: 
End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Application.WorksheetFunction.CountA(Target) = 0 Then Exit Sub 

    Dim aCell As Range, i As Long, j As Long 

    On Error GoTo Whoa 

    Application.EnableEvents = False 

    If Not Intersect(Target, Columns("A:AN")) Is Nothing Then 
     If Target.Rows.Count = 1 And Target.Columns.Count >= 1 Then 
      Range("A" & Target.Row).Interior.ColorIndex = 3 
     ElseIf Target.Rows.Count > 1 And Target.Columns.Count = 1 Then 
      i = 1 
      For Each aCell In Target 
       If aCell.Value <> PrevVal(i, 1) Then 
        Range("A" & aCell.Row).Interior.ColorIndex = 3 
       End If 
       i = i + 1 
      Next 
     ElseIf Target.Rows.Count > 1 And Target.Columns.Count > 1 Then 
      Dim pRow As Long 

      i = 1: j = 1 

      pRow = Target.Cells(1, 1).Row 

      For Each aCell In Target 
       If aCell.Row <> pRow Then 
        i = i + 1: pRow = aCell.Row 
        j = 1 
       End If 

       If aCell.Value <> PrevVal(i, j) Then 
        Range("A" & aCell.Row).Interior.ColorIndex = 3 
       End If 
       j = j + 1 
      Next 
     End If 
    End If 

LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    Resume LetsContinue 
End Sub 
Смежные вопросы