-1

下面是我的要求

1.有两张纸,比如 Sh1、Sh2

2.两张纸之间的行数不同(它们之间的行数可能/可能不同)

3.工作表的已用列因考虑比较的数据而异但在任何给定时间点,两个工作表都将具有相同数量的已用列(理想情况下,两个工作表的范围都是动态的)

4.现在我需要对它们进行比较,找出 Sh1、Sh2 中的多余记录并将它们保存在 diff 工作表 Sh3、Sh4 左右。

5.执行的比较需要是 Sh1 和 Sh2 之间的行级别比较 6.我更喜欢使用数组(将工作表加载到数组)并对其执行比较并返回值 - 性能起主要作用,因为数据可能会关闭数百万记录

  1. 有没有办法比较两个大小不相同的数组?
  2. 可以忽略匹配的行

  3. 有没有办法应用一些 Join() 函数并从 Array1 读取完整的行并将它们与 Array2 进行比较?

对不起,如果我以任何方式违反论坛规则!

我希望没有讨论比较具有不同动态范围的两张表以找到此处或任何地方的不匹配

我主要看到 ppl 将比较限制为仅一个 Column ,或仅用于固定范围

我的最终目标是做一些 VBA 代码,其操作类似于“超越比较”(好吧,不是确切的行为,请阅读它)

4

1 回答 1

0

我一直在研究一种类似的 vba 宏。希望下面的代码有帮助!

您所需要的只是描绘并包括 1)如果可能的话,行级别比较 2)遍历数组并找到差异

** 我是

代码如下所示:

'比较代码

子比较宏()

Application.ScreenUpdating = True
Dim sheet1, sheet2, sheet4, sheet3 As Worksheet
Dim rComp, rcomp1 As Range, addy As String, addz As String
Dim iRow As Long, jCol As Long
Dim kRow As Long, lCol As Long
Dim strFileRange As String
Dim strDBRange As String



Set sheet1 = Sheets("File")
Set sheet2 = Sheets("DB")
Set sheet3 = Sheets("File(-)DB")
Set sheet4 = Sheets("DB(-)File")


sheet1.Select
Set rComp = sheet1.UsedRange

sheet2.Select
Set rcomp1 = sheet2.UsedRange


addy = rComp.Address
addz = rcomp1.Address
ary1 = rComp
ary2 = rcomp1
ary3 = sheet3.Range(addy)
ary4 = sheet4.Range(addz)

'*********File MINUS DB code goes here*********

'Step 1
'VALIDATE IF THE ROW1 OF File matches with Any of the Row in DB
'This step should include Iteration of Rows in DB range


'Step 2
'Proceed with Next row (ROW1+1 OF File) if Match Occurs
'This step contains incremental of File row & Starting comparison from First Row of DB

'Step 3
'If no Match occurs , Add the Specific Row to ary3
'This step captures the complete Mismatch record of File Row


'*********DB MINUS File code goes here*********


'Similar to the Flow of File MINUS DB



'adding the Array3 & 4 resultant Sheets

sheet3.Range(addy) = ary3
sheet4.Range(addz) = ary4

结束子

于 2014-04-30T06:03:56.030 回答