1

我正在尝试我的excel文件:

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

结果将是这样的:

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

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

运行宏后:

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

你能帮我解决这个问题吗?

非常感谢。

4

2 回答 2

0

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

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
于 2013-07-01T13:24:23.860 回答
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
于 2013-07-01T13:21:49.063 回答