用VBA代码实现比较在同一张表格的两个4列的无序数据,在第二张表格用红色字体标出差异,在第三张表格只显示差异数据
时间: 2024-03-15 19:44:43 浏览: 136
在EXCEL中用VBA创建WORD文档表格.docx
以下是用VBA代码实现比较在同一张表格的两个4列的无序数据,在第二张表格用红色字体标出差异,在第三张表格只显示差异数据的方法:
1. 首先打开Excel,按下Alt + F11进入VBA编辑器。
2. 在VBA编辑器中,打开需要操作的Excel文件,然后点击“插入” -> “模块”,在新建的模块中输入以下代码:
```
Sub CompareData()
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim arr1 As Variant, arr2 As Variant, arr3 As Variant
Dim i As Long, j As Long, k As Long
' 指定需要操作的工作表
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set ws3 = Worksheets("Sheet3")
' 获取需要比较的数据区域
arr1 = ws1.Range("A1").CurrentRegion.Value
arr2 = ws1.Range("E1").CurrentRegion.Value
' 在第二张表格中标出差异
For i = 1 To UBound(arr1, 1)
For j = 1 To UBound(arr1, 2)
If IsError(Application.Match(arr1(i, j), arr2, 0)) And arr1(i, j) <> "" Then
ws2.Cells(i, j).Font.Color = vbRed
End If
Next j
Next i
' 在第三张表格中只显示差异数据
k = 1
For i = 1 To UBound(arr1, 1)
For j = 1 To UBound(arr1, 2)
If IsError(Application.Match(arr1(i, j), arr2, 0)) And arr1(i, j) <> "" Then
arr3(k, 1) = arr1(i, j)
arr3(k, 2) = arr1(i, j + 1)
arr3(k, 3) = arr1(i, j + 2)
arr3(k, 4) = arr1(i, j + 3)
k = k + 1
End If
Next j
Next i
' 在第三张表格中输出差异数据
ws3.Range("A1").Resize(k - 1, 4).Value = arr3
End Sub
```
3. 在代码中,首先指定需要操作的工作表,然后获取需要比较的数据区域。接着,在第二张表格中标出差异,如果某个单元格的值在第一个数据区域中没有找到匹配项,且当前单元格不为空,则将其标红。最后,在第三张表格中只显示差异数据,将差异数据存储到一个数组中,然后输出到第三张表格中。
4. 在代码输入完成后,按下F5执行代码,即可实现比较在同一张表格的两个4列的无序数据,在第二张表格用红色字体标出差异,在第三张表格只显示差异数据的功能。
阅读全文