【问题标题】:Looking for changes in cells - Excel files查找单元格中的更改 - Excel 文件
【发布时间】:2011-12-01 15:47:14
【问题描述】:

我有 2 个 excel 文件,每个文件都有很多数据。两个文件中的数据结构完全相同,但由于数据来自两个不同的时间,因此值可能已更改。

基本上我想找到一些方法来自动比较两个文件的每个单元格中的值,并突出显示文件 #2 中值已更改的单元格。

欢迎分享你的想法!

例子:

文件 1:

一/一/二

文件 2:

一 / 1 / 8

(/ - 表示新单元格)

【问题讨论】:

  • 是否只有您想比较的值?不是格式、字体大小、颜色等?另外,您的所有数据是在一张纸上还是在多张纸上?什么是“每张纸上有很多数据”?
  • 只想比较值,但希望输出突出显示不同的值。我正在比较的两个数据集位于 2 个不同的工作表中。

标签: excel vba


【解决方案1】:

另外两个选项:

  1. 电子表格优势http://www.spreadsheetadvantage.com/,您可以获得 30 天免费试用

这是我最喜欢的工具,因为它还提供了一个行和列对齐选项,以确保在运行比较输出代码以突出显示任何差异之前,两个工作表都按行和列一致地呈现

  1. Myrna Lawson 的 compare.xla 插件(免费)可在 Chip Pearson 的网站http://www.cpearson.com/Zips/Compare.zip 获得

【讨论】:

    【解决方案2】:

    这可能不是最有效的方法(虽然可以在几秒钟内处理 25k 个单元格),但它的简单性足以弥补这一点。

    这将查看 Sheet2 中的每个单元格,并将其与您指定文件的 Sheet1 中相同地址的单元格中的值进行比较。如果不同,Sheet2 中的单元格以黄色突出显示。

    Sub FindDifferences()
    
    Application.ScreenUpdating = False
    Dim cell As Range
    Dim wkb1 As Workbook
    Dim wks1 As Worksheet
    
    Set wkb1 = Workbooks.Open(Filename:="C:\MyBook.xls")
    Set wks1 = wkb1.Worksheets("Sheet1")
    
    For Each cell In ThisWorkbook.Sheets("Sheet2").UsedRange
        If cell.Value <> wks1.Cells(cell.Row, cell.Column).Value Then
            cell.Interior.Color = vbYellow
        End If
    Next
    
    wkb1.Close
    Application.ScreenUpdating = True
    End Sub
    

    注意: 您可以通过简单地删除 wkb1 和 wks1 变量并将 wks1.Cells... 更改为 Sheets("Sheet1").Cells... 来轻松定制它以比较同一文件中的 2 张工作表.​​..

    【讨论】:

      【解决方案3】:

      您可以使用这个online website - xlcomparator.net(点击右上角的旗帜查看英文版)。

      或者试试这个软件:http://www.formulasoft.com/excel-compare.html

      或者尝试这种宏(检查第一列)并根据您的需要进行调整:

      sub compare()
         Application.ScreenUpdating = False
         Dim coll1 As New Collection, coll2 As New Collection
         Dim cell1 As Range, cell2 As Range
         Dim Element1 As Object, Element2 As Object
      
       Workbooks("workbook1.xls").Activate
         For Each Cellule1 In Range("a:a")
      
        coll1.Add cell1
         Next Cellule1
      
       Workbooks("workbook2.xls").Activate
         For Each cell2 In Range("a:a")
      
        coll2.Add cell2
         Next cell2
         For Each Element1 In coll1
           For Each Element2 In coll2
            If Element1 <> Element2 Then
               Element1.Font.Color = vbRed
        Else
               Element1.Font.Color = vbBlack
               Exit For
            End If
           Next Element2
         Next Element1
      
       Application.ScreenUpdating = True
       end sub
      

      Source - excelabo, a french website

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多