龙空技术网

Excel 工作表比较,几行VBA代码,轻松轻松找出不同数据

江觅 806

前言:

此刻大家对“vba 字符串对比”大约比较关怀,兄弟们都想要分析一些“vba 字符串对比”的相关文章。那么小编在网摘上网罗了一些有关“vba 字符串对比””的相关资讯,希望各位老铁们能喜欢,大家一起来了解一下吧!

财务当中或者是两个相同类型的表进行核对的时候,需要对工作表进行数据对比。

此项工作如果人工完成,可能有点困难,无论是对人的耐心还是对眼睛的长时间注视都提出不小的挑战。

当然了,Excel中也有一些方便的操作或以实现。

本节就以VBA为基础,进行一些编码,然后实现此类功能。

首先,对工作表对比进行一个流程演练。

本节主要针对两个表比对,三个以上不做考虑。

那么就要以两个表进行数据考虑,设置两个变量数组,把表内容保存到数组当中,然后,分别进行数组对比,这样做效率很高,最好不要进行单元格对比。

由于是不同的两个表,所以有可能一个表数据比另一个多。

那么就分别提取两个数组的上下标,这样把多出来数据的直接标识为不同。

两个数组比对使用两个循环进行。

下面看代码,自己分析一下。

上图为比对结果,带颜色的就是比对出不同数据的单元格。

比较使用了一个过程,如下:

Private Sub CheckString()Dim S1 As Worksheet, S2 As WorksheetDim cArr(), s1Arr, s2Arr, ir1 As Long, ir2 As Long, ic1 As Long, ic2 As LongDim i As Long, c As Long, n As Long, ir As Long, ic As Long, ire As Long, ice As LongcArr = Array(Sheets(1).Name, Sheets(2).Name)ThisWorkbook.Worksheets(cArr).SelectSet S1 = ThisWorkbook.Worksheets(cArr(0))Set S2 = ThisWorkbook.Worksheets(cArr(1))S1.UsedRange.Interior.Color = RGB(251, 251, 251)S2.UsedRange.Interior.Color = RGB(251, 251, 251)s1Arr = S1.UsedRanges2Arr = S2.UsedRangeir1 = UBound(s1Arr, 1)ic1 = UBound(s1Arr, 2)ir2 = UBound(s2Arr, 1)ic2 = UBound(s2Arr, 2)If ir1 > ir2 Then    ir = ir2    ire = ir1 - ir2Else    ir = ir1    ire = ir2 - ir1End IfIf ic1 > ic2 Then    ic = ic2    ice = ic1 - ic2Else    ic = ic1    ice = ic2 - ic1End IfFor i = 1 To ir    For c = 1 To ic        If s1Arr(i, c) <> s2Arr(i, c) Then           S1.Cells(i, c).Interior.Color = RGB(222, 211, 112)           S2.Cells(i, c).Interior.Color = RGB(222, 211, 112)           n = n + 1        End If    Next cNext iFor i = ir To ir + ire    For c = ic To ic + ice        n = n + 1    Next cNext iMsgBox "对比结束,一共找出:" & n & "处不同!", vbInformation, "提示"End Sub

代码还是比较简单的,主要是循环比较不好理解,实际上逻辑也不难,就是两个数组进行比较。

数据不同就把相应的单元格设置颜色,相同就不做任何处理。

重点是要对二维数组有一个清晰的概念,要知道哪个单元格对应的数组维度,这样就很好理解代码了。

多学多练,自然就明白了。

欢迎关注、收藏

---END---

标签: #vba 字符串对比 #vba数据比对怎么写