比较并插入行(VBA)

时间:2013-07-01 12:22:43

标签: excel excel-vba vba

我正在尝试使用我的excel文件:

比较G列和H列 - 如果他们有相同的文字 - >转到下一行继续比较
- 如果他们没有相同的文字 - >在G下方插入一行,然后继续比较。

结果将是:

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

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

运行宏后:

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

请帮帮我吗?

非常感谢。

2 个答案:

答案 0 :(得分:0)

像这样的东西

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

答案 1 :(得分:0)

您可以选择要查看的范围,然后循环显示行。 比较单元格,如果它们不相同,请选择正确的单元格。 然后插入新单元格并将所有内容移至1个单元格 这段代码有点慢,因为它选择了整个列。 您可以更改比较语句以进行不同的比较

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