比较2个工作表中的空白行,如果在VBA中找到不同的行,则插入空行

时间:2015-03-20 13:32:53

标签: excel vba

我尝试在使用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 

2 个答案:

答案 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