我想我的Excel文件:比较并插入行(VBA)
比较列G和H
- 如果他们有相同的文字 - >转到下一行继续比较
- 如果它们没有相同的文本 - >在G下插入一行,然后继续比较。
其结果将是这样的:
运行宏之前(第一列是G,第二列是H):
:运行宏后
你能帮我解决这个问题吗?
非常感谢。
我想我的Excel文件:比较并插入行(VBA)
比较列G和H
- 如果他们有相同的文字 - >转到下一行继续比较
- 如果它们没有相同的文本 - >在G下插入一行,然后继续比较。
其结果将是这样的:
运行宏之前(第一列是G,第二列是H):
:运行宏后
你能帮我解决这个问题吗?
非常感谢。
像这样的事情
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个单元格 此代码有点慢,因为它选择了整个列。 您可以更改比较语句来做出不同的比较
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
发布您的代码向我们展示你有什么至今。 –
我甚至不知道自己是否处于好路径:Dim lCounter As Long'< - 'ALIGN COLUMNS lCounter = 11'将其设置为第一行数 尽管Range(“H”&lCounter )“Range”(“I”&lCounter).Value <>“” If Range(“H”&lCounter).Value <> Range(“I”&lCounter)Then Range(“H “&lCounter&”:A&lCounter)。插入Shift:= xlDown End If lCounter = lCounter + 1 Loop – Ric
顺便说一句,这里的colums不同,我现在正在处理另一个文档。 – Ric