2013-07-01 99 views
1

我想我的Excel文件:比較並插入行(VBA)

比較列G和H
- 如果他們有相同的文字 - >轉到下一行繼續比較
- 如果它們沒有相同的文本 - >在G下插入一行,然後繼續比較。

其結果將是這樣的:

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

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

運行宏後

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

你能幫我解決這個問題嗎?

非常感謝。

+3

發佈您的代碼向我們展示你有什麼至今。 –

+0

我甚至不知道自己是否處於好路徑: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

+0

順便說一句,這裏的colums不同,我現在正在處理另一個文檔。 – Ric

回答

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 
+0

目前我無法使其工作,它進入無限循環,但我可以開始使用它。非常感謝! :) – Ric

+0

您的數據是否與樣本中顯示的一樣?我的代碼將運行在列G1中的儘可能多的單元格 – brettdj

+0

是的,它是一樣的。事實上,這不是一個無限循環,發生在其他代碼中,對不起。複製/粘貼代碼並運行它會刪除G列中的所有內容。 – Ric

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 
+0

嘿,如果它需要一段時間沒關係。 :)但是它的功能是問我是否繼續操作,因爲操作會導致一些合併的單元格解除合併,然後在無限循環中向下移動第四列。 – Ric

+0

如果G中的所有值都出現在H中,它似乎可以工作。但是當G中的值不存在時,它開始在無限循環中插入白色行。 – Ric