我尝试在使用Col A 或 Col B作为指南的2之间进行比较后,将空行插入2个工作表。我有超过10列和很多行。也许我试着用下面的简化例子来解释:
Sheet1
A B C
1 2 3
111 222 333
1111 2222 3333
Sheet2
A B C
1 2 3
11 22 33
1111 2222 3333
比较后
Sheet1
A B C
1 2 3
(insert a blank row)
111 222 333
1111 2222 3333
Sheet 2中
A B C
1 2 3
11 22 33
(insert a blank row)
1111 2222 3333
答案 0 :(得分:1)
我认为我们需要更多关于这个例子的细节。只要相对表中没有匹配项,空行的逻辑似乎就是添加一个空行。但是,除非它们始终按相同方向排列在特定列上,否则这将非常棘手。我不确定具体的代码,但我认为它的逻辑是一个嵌套的循环,它检查工作表B的每一行对一张工作表A.当它检查时,它还应该携带一个最接近匹配的变量到不大于该值的值。这样,如果找不到匹配,它可以在最接近的匹配后插入一个空行,而不会过去。然后,您将运行相同的代码,然后针对A中的所有行检查B中的每个值。
答案 1 :(得分:0)
玩游戏:
Sub InsertBlankIfNotMatched()
Dim rngA As Range
Dim rngB As Range
Dim lngDataCounter As Long
Dim lngRowCount As Long
Dim varData1 As Variant
Dim varData2 As Variant
Dim chk As Integer
chk = 1
Set rngA = Sheet1.Range("A1").CurrentRegion
Set rngB = Sheet2.Range("A1").CurrentRegion
lngRowCount = rngA.Rows.Count
For lngDataCounter = 1 To lngRowCount
varData1 = Application.Transpose(Application.Transpose(rngA.Rows(lngDataCounter).Value))
varData2 = Application.Transpose(Application.Transpose(rngB.Rows(lngDataCounter).Value))
If chk = 1 Then
If Join(varData1, "") <> Join(varData2, "") Then
rngA.Rows(lngDataCounter).Insert Shift:=xlDown
lngRowCount = lngRowCount + 1
chk = 2
End If
ElseIf chk = 2 Then
If Join(varData1, "") <> Join(varData2, "") Then
rngB.Rows(lngDataCounter).Insert Shift:=xlDown
lngRowCount = lngRowCount + 1
chk = 1
End If
End If
Next
End Sub