我想我的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