1

我想在 VB 中比较 2 个 Excel 表格。我知道如何在 QTP/UFT 中打开这些工作表我知道如何获取所有单元格的范围。但我不知道比较这两张纸(范围)的有效方法。

如果第二张表中的值与第一张表中的相应值不同,则应将其插入第二张表的相应单元格中。我可以串行解析所有单元格以与相应的单元格进行比较,但这不是很高效。

我想通过以下方式进行比较:

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

希望它可以帮助你。它进行比较,如果在第二张表中与第一张表相比有任何变化,它将更新单元格值并以黄色突出显示。

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 回答