比较并插入行(VBA)

我正在尝试我的Excel文件:

比较列G和H
– 如果他们有相同的文本 – >去下一行继续比较
– 如果它们没有相同的文本 – >在G之下插入一行,然后继续比较。

结果是这样的:

在运行macros之前 (第一列是G,第二列是H):

http://img541.imageshack.us/img541/5196/c49u.jpg

运行macros之后:

http://img153.imageshack.us/img153/9527/dwkj.jpg

你能帮我吗?

非常感谢。

像这样的东西

Sub CompArray() Dim G Dim H Dim X Dim lngCnt As Long Dim lngMark As Long G = Range([g1], Cells(Rows.Count, "G").End(xlUp)) H = Range([H1], Cells(Rows.Count, "H").End(xlUp)) X = H For lngCnt = 1 To UBound(X, 1) If G(lngCnt - lngMark, 1) = H(lngCnt, 1) Then X(lngCnt, 1) = G(lngCnt - lngMark, 1) Else lngMark = lngMark + 1 X(lngCnt, 1) = vbNullString End If Next [g1].Resize(UBound(X), 1) = X End Sub 

你可以select你想要查看的范围,然后遍历行。 比较单元格,如果它们不相同,请select正确的单元格。 然后插入新的单元格,并将所有内容移动到1个单元格下面的代码有点慢,因为它select整个列。 您可以更改比较语句以进行不同的比较

 Dim rngCompare As Range Dim rowCount As Long Dim iCount As Long Set rngCompare = ActiveSheet.Columns("D:E") rowCount = rngCompare.Rows.Count For iCount = 1 To rowCount If StrComp(rngCompare.Cells(iCount, 1), rngCompare.Cells(iCount, 2), vbTextCompare) <> 0 Then rngCompare.Cells(iCount, 1).Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End If Next iCount