1

VB で 2 つの Excel シートを比較したい。これらのシートを QTP/UFT で開く方法を知っています。すべてのセルの範囲を取得する方法を知っています。しかし、これらの 2 つのシート (範囲) を比較する効率的な方法はわかりません。

2 番目のシートの値が最初のシートの対応する値と異なる場合、2 番目のシートの対応するセルに挿入されます。すべてのセルを順番に解析して、対応するセルと比較できますが、これはあまりパフォーマンスが高くありません。

次の方法で比較したいと思います。

If not (sheet1.range() equals sheet2.range()) then
  if not (Sheet1.range.Row equals sheet2.range.row) then
    if not (Sheet1.range.Row.cells equals Sheet2.range.Row.cells) then
      Sheet2.range.Row.cells.value = Sheet1.range.Row.cells.value

すべての値は異なる行とセルにある可能性がありますが、最初の列と列のヘッダーに対応する ID があります。したがって、両方のシートの正しい行 ID と、両方の列ヘッダーの対応する列を解析する必要があります。プログラムで比較を行う必要があるため、シートで数式を使用したくありません。

Excelで使用できる関数、メソッド、またはプロパティがあれば、ヒントを教えてください。前もって感謝します

4

1 に答える 1

3

お役に立てば幸いです。比較し、2 番目のシートで最初のシートから変更があった場合、セルの値が更新され、黄色で強調表示されます。

Set objMyExcel = CreateObject(“Excel.Application”)
objExcel.Visible = False

Set objMyDataExcel1= objMyExcel.Workbooks.Open(“C:\Data1.xls”)
Set objMyDataExcel2= objMyExcel.Workbooks.Open(“C:\Data2.xls”)

Set objMyWorksheet1= objMyDataExcel1.Worksheets(1)
Set objMyWorksheet2= objMyDataExcel2.Worksheets(1)

For Each cell In objMyWorksheet1.UsedRange

   If cell.Value <> objMyWorksheet2.Range(cell.Address).Value Then

       objMyWorksheet2.Range(cell.Address).Value = cell.Value
       cell.Interior.ColorIndex = 6

   Else

       cell.Interior.ColorIndex = 0

   End If

 Next

Set objMyExcel = Nothing

実行時間のExcelを表示したい場合は、設定します

objExcel.Visible = True
于 2014-01-21T11:02:41.887 に答える