2014-01-14 50 views
-1

我想創建一個VBA宏來搜索列A,並且每次在該列中找到2個相同(和相鄰!)的單元格以刪除其中一個並向上移動。我希望它留在列A中,並且每次出現相鄰的重複項時都將其刪除。 差不多我有交替像這樣的信息的Excel工作表:刪除相鄰的單元格是否重複?

但我經常遇到困難這樣

B

一個

一個

那些2點B的是什麼,我希望它自動清除和高達上移動單元格,但我不知道該如何去做。 有什麼建議嗎?

編輯:我解決了我自己的問題。答案在下面,但這裏又是幫助其他可能遇到問題的人。

沒關係的人。我有這個。我錄製了一個使用過濾器和一個簡單公式的宏。在列B中,我把它放在:= IF(a1 = a2,「停止」,「」)然後我拖下來複制它。然後我過濾了B列,只顯示「停止」單元格。然後我清除了那些細胞。然後我沒有過濾B列以顯示所有內容。然後,我去了首頁>查找和選擇>特殊>選擇空白然後我刪除並移動單元格上選定的空白。然後我將B列公式向下拖動,爲我錄製的宏製作工作循環。下面有什麼錄音結束看起來像:

Sub DUPES() 

ActiveCell.FormulaR1C1 = "=IF(RC[-1]=R[1]C[-1],""DLT"","""")" 
Range("J2").Select 
Selection.AutoFill Destination:=Range("J2:J1000"), Type:=xlFillDefault 
Range("J2:J1000").Select 
ActiveSheet.Range("$A$1:$L$500").AutoFilter Field:=10, Criteria1:="<>" 
Range("I11:J11").Select 
Range(Selection, Selection.End(xlDown)).Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.ClearContents 
Range("A11").Select 
ActiveSheet.Range("$A$1:$L$500").AutoFilter Field:=10 
ActiveWindow.SmallScroll Down:=-42 
Columns("I:I").Select 
Selection.SpecialCells(xlCellTypeBlanks).Select 
Selection.Delete Shift:=xlUp 
Range("J2").Select 
Selection.AutoFill Destination:=Range("J2:J1000"), Type:=xlFillDefault 
Range("J2:J1000").Select 

Range("I2").Select 
End Sub 
+0

我曾嘗試手動錄製宏刪除重複同時告訴它退出子,當它達到了「不同」的變量。 – Forbidden

+0

如果sel.Offset(i).Value = prev Then sel.Offset(i).EntireRow。刪除 我也嘗試搞亂補償,但是,我真的不擅長做這種事情。 – Forbidden

回答

0

沒關係的人。我有這個。我錄製了一個使用過濾器和一個簡單公式的宏。 在列B我把它放在: = IF(a1 = a2,「停止」,「」) 然後我拖下來複制它。 然後我過濾了B列,只顯示「停止」單元格。 然後我清除了那些細胞。 然後我沒有過濾B列顯示所有。 然後,我去了首頁>查找和選擇>特殊>選擇空白 然後我刪除並移動單元格上選定的空白。 然後我將B列公式向下拖動,爲我錄製的宏製作一個工作循環。 錄製結束下面有什麼看起來像:

Sub DUPES() 

ActiveCell.FormulaR1C1 = "=IF(RC[-1]=R[1]C[-1],""DLT"","""")" 
Range("J2").Select 
Selection.AutoFill Destination:=Range("J2:J1000"), Type:=xlFillDefault 
Range("J2:J1000").Select 
ActiveSheet.Range("$A$1:$L$500").AutoFilter Field:=10, Criteria1:="<>" 
Range("I11:J11").Select 
Range(Selection, Selection.End(xlDown)).Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.ClearContents 
Range("A11").Select 
ActiveSheet.Range("$A$1:$L$500").AutoFilter Field:=10 
ActiveWindow.SmallScroll Down:=-42 
Columns("I:I").Select 
Selection.SpecialCells(xlCellTypeBlanks).Select 
Selection.Delete Shift:=xlUp 
Range("J2").Select 
Selection.AutoFill Destination:=Range("J2:J1000"), Type:=xlFillDefault 
Range("J2:J1000").Select 

Range("I2").Select 
End Sub 
0
sub removedup 
Columns("A:B").Select 
ActiveSheet.Range("$A$1:$B$8").RemoveDuplicates Columns:=1, Header:=xlYes 
end sub 

有在Excel中2007/10/13帶一個刪除重複的按鈕 - 但只要你想VBA這個假設你有A1列標題和b1

+0

是的,我知道那個按鈕。對不起,我不是很清楚,但我希望它留在列A中,並且每次出現重複時都會刪除它。生病編輯我的OP來反映這一點。 – Forbidden

+0

列A中有多於2個變量作爲其上面的虛擬數據? – Will

+0

是的,沒有。使用上面的Dummy,我的Excel表對A有許多不同的可能性,但B總是相同的。 – Forbidden