标签:Dim VBA End columnIndex 异同 Excel sameRow partialDataRange fullDataRange
代码背景:
- 由于Excel本身无法简单的比较两个Excel数据的异同,所以用VBA编写代码的方式来实现。
- 这里的比较条件是:数据行为单位,假设对应Sheet中没有重复数据,对应数据行的所有列的数据都相等,即为此行数据相同。
- 这里的两个Sheet的数据行量级别大约为:50000 * 50000,数据列大约:50,对应Cell中的字符串大约100以内,中英文混合。
- 如何在Excel中调出VBA的编写工具,请参考如下链接: https://jingyan.baidu.com/article/63f236281f17650208ab3d97.html
整体来说,需求非常明确,代码逻辑比较简单。
相关代码:
Sub CompareData() Dim i As Long Dim j As Long Dim fullSheetName As String fullSheetName = "Sheet1" Set fullSheet = Sheets(fullSheetName) Dim fullDataRange As Variant fullDataRange = fullSheet.Range("A1", "AN43921").CurrentRegion.Value Dim fullSheetRowMax As Long fullSheetRowMax = Range("A1", "AN43921").CurrentRegion.Rows.Count Dim partialSheetName As String partialSheetName = "Sheet2" Set partialSheet = Sheets(partialSheetName) Dim partialDataRange As Variant partialDataRange = partialSheet.Range("A1", "AN40000").CurrentRegion.Value Dim partialSheetRowMax As Long partialSheetRowMax = partialSheet.Range("A1", "AN40000").CurrentRegion.Rows.Count Dim columnMax As Integer columnMax = 40 Dim columnMark As Integer columnMark = 42 Dim sameRow As Boolean For i = 1 To fullSheetRowMax For j = 1 To partialSheetRowMax sameRow = True For columnIndex = 1 To columnMax If IsEmpty(fullDataRange(i, columnIndex)) And Not IsEmpty(partialDataRange(j, columnIndex)) Then sameRow = False Exit For End If If IsEmpty(partialDataRange(j, columnIndex)) And Not IsEmpty(fullDataRange(i, columnIndex)) Then sameRow = False Exit For End If If fullDataRange(i, columnIndex) <> partialDataRange(j, columnIndex) Then sameRow = False Exit For End If Next columnIndex If sameRow Then fullSheet.Cells(i, columnMark) = 1 Exit For End If Next j Next i MsgBox "Successfully!" End Sub
标签:Dim,VBA,End,columnIndex,异同,Excel,sameRow,partialDataRange,fullDataRange 来源: https://www.cnblogs.com/mingmingruyuedlut/p/12813041.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。