2015-02-01 6 views
1

차이 셀에 중복 된 값이있는 Excel 시트가 있습니다. 그러나 여기 잡아 먹는 것은 모든 세포가 서로 인접 해 있지 않다는 것입니다. &에서 시트를 수동으로 임의로 선택하여 중복 된 셀을 제거하려고합니다.Excel VBA를 사용하여 무작위 셀에서 중복 제거

아래에서 나는 값 "test"가있는 임의의 셀을 선택했습니다. 선택한 셀에서 복제본을 제거하고 싶습니다.

사과 : 가능한 시나리오 추가. 반복적 인 세포가 처음 나타날 때만 필요합니다. 남은 어커런스를 제거하십시오. A1 = TEST & B6 = WEST가 주어져야 함을 의미합니다. 다른 모든 셀 값은 제거해야합니다.

Sub dural() 
    Dim v As Variant, r As Range 
    v = ActiveCell.Text 
    addy = ActiveCell.Address 
    For Each r In Selection 
     If Not addy = r.Address Then 
      If r.Value = v Then 
       r.ClearContents 
      End If 
     End If 
    Next r 
End Sub 
+0

* ActiveCell *은 C12입니다. C12 (또는 다른 셀)를 * Test *로 유지하거나 모두 제거 하시겠습니까? – Jeeped

+0

@Jeeped - 선택한 활성 셀 (C12)을 제외한 모든 셀을 제거합니다. 고맙습니다. –

+1

음 : 귀하의 편집. '첫 번째 사건'이란 무엇을 의미합니까? 예를 들어, 새 (첫 번째) 이미지의 강조 표시된 셀 (A1)이없는 경우 '첫 번째 발생'이 무엇입니까? C2 (행 기준) 또는 A5 (열 기준)일까요? – barryleajo

답변

3

enter image description here

.

당신은 세포의 내용과 서식을 삭제하고 더 선택한 셀 강조하지와 ActiveCell에 커서를 마칠 경우

Dim fnd As Range, fcl As Range, searchTerm As Variant 

With ActiveSheet 
    Set fcl = ActiveCell 
    searchTerm = fcl.Value 
    Set fnd = .Cells.Find(What:=searchTerm, After:=fcl, LookIn:=xlValues, LookAt:= _ 
     xlWhole, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 
    Do While fcl.Address <> fnd.Address 
     fnd.ClearContents 
     Set fnd = .Cells.FindNext(After:=fcl) 
    Loop 
End With 
1

가이 사이트에 대한 몇 가지 Find/FindNext 예보다 더 많은 수 있지만, 여기에 또 다른 하나한다 : 이미 임의 선택을했다고 가정

Problem Screenshot for reference

2

그리고 또 ....

선택을하면 내용이 남아있는 ActiveCell이 마지막으로 방문한 셀이 선택됩니다.

Option Explicit 
Sub remSelDup() 
Dim ac As Range, c As Range 
Set ac = ActiveCell 
    For Each c In Selection 
     If c = ac And c.Address <> ac.Address Then 
      c.Clear 
     End If 
    Next c 
ac.Select 
End Sub 
3

그냥 재미 있기 때문에 여기는 루핑되지 않는 버전입니다. 그것은를 ActiveCell의 값을 닦은 다음 내 제한된 테스트에서 모든 상황에서 근무하는, 다시 할당 않습니다

Sub RemoveAllSelectionCellsExceptActiveCell() 
Dim ActiveCellValue As Variant 

ActiveCellValue = ActiveCell.Formula 
Selection.Clear 
ActiveCell.Formula = ActiveCellValue 
End Sub 

편집 : 응답 편집 된 질문

이 사실 adding a duplicate to a collection generates an error 그에 의존합니다. 이 경우 해당 셀이 삭제할 셀 범위에 추가됩니다. "= 2"가 "2"인 셀과 다른 셀을 처리합니다.

관련 문제