2014-01-14 5 views
-1

Я хочу сделать макрос VBA, который ищет через столбец A и каждый раз, когда он находит 2 ячейки в этом столбце, которые являются одинаковыми (и смежными!), Чтобы удалить один из 2 и сдвинуть вверх. Я хочу, чтобы он оставался в столбце A, и каждый раз, когда дубликат приходил рядом, чтобы удалить его. Довольно много у меня есть лист первенствовать, что чередуется информация, как так:Удалить соседние ячейки, если они дублируются?

B

B

Но я часто била коряги как этот

A

B

B

B

A

Эти 2 B являются то, что я хочу, чтобы автоматически ясно и переложить клетки вверх, но я не уверен, как идти об этом , Любые предложения?

EDIT: Я решил свой собственный вопрос. Ответ ниже, но здесь он снова поможет другим, кто, возможно, столкнулся с проблемой, как и я.

Nevermind people. Я получил это. Я записал макрос, который использует фильтры и простую формулу. В столбце B я помещаю это в: = IF (a1 = a2, «STOP», «»). Затем я перетащил его, чтобы скопировать. Затем я отфильтровал столбец B, чтобы показать только ячейки «STOP». Затем я очистил эти клетки. Затем я отфильтровал столбец B, чтобы показать все. Затем я перешел в Home> Find and Select> Special> Select Blanks. Затем я удалил и сдвинул ячейки вверх по выбранным пробелам. Затем я перетащил формулу столбца 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 Затем sel.Offset (i) .EntireRow.Удалить Я также попытался возиться со смещениями, но я действительно нехорошо делаю такое. – Forbidden

ответ

0

Nevermind people. Я получил это. Я записал макрос, который использует фильтры и простую формулу. В столбце B я помещаю это в: = IF (a1 = a2, "STOP", "") Затем я перетащил его, чтобы скопировать. Затем я отфильтровал столбец B, чтобы показать только ячейки «STOP». Затем я очистил эти ячейки. Затем я нефильтровую колонку 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 

Существует дубликат кнопки удалить в первенствовать 2007/10/13 в ленте - но, как вы хотите, это предполагает, VBA, что у вас есть заголовки столбцов в a1 и b1

+0

Да, я знал об этой кнопке. Извините, я не был очень ясен, но я хотел, чтобы он оставался в столбце A, и каждый раз, когда дубликат приходил рядом, чтобы удалить его. Ill отредактируйте мой OP, чтобы это отразить. – Forbidden

+0

Есть ли более двух переменных в столбце A в качестве его фиктивных данных выше? – Will

+0

Да и Нет. Используя Dummy выше, мой лист excel имеет много разных возможностей для A, но B всегда один и тот же. – Forbidden

Смежные вопросы