소프트웨어 엑셀(Excel) 중복 데이터 삭제하기 문의
2016.03.22 20:17
다른 곳에 마땅히 문의할 만한 곳이 없어서 여기에 문의드립니다.
엑셀에서 중복된 값만 찾아서 중복된 값 하나만 남기고
나머지를 삭제하고 싶은데 실력이 미천해서 잘 안 되네요.
첨부한 그림처럼 번호1, 번호2, 번호3과 같이 열이 여러 개 있을 때
모든 열의 데이터에서 중복값을 찾아서 제거하는 방법이 없을까요?
데이터 메뉴에 있는 "중복된 항목 제거" 메뉴로는 안 되네요ㅠㅜ
댓글 [12]
-
지후빠 2016.03.23 00:45
-
재즈피아 2016.03.23 09:19
너무 너무 감사합니다.
이따 알려주신대로 해보고 피드백 올리겠습니다^^ -
클라우디 2016.03.23 11:28
엑셀의 제공 기능을 잘 몰라서 여쭙습니다.
이처럼 중간 중간 빵꾸난 쎌이 있을 때,
아래 셀을 주르륵 끌어올리는 방법이 있는가요 ?
매크로를 짠다면 별 것 아니겠지만...
매크로는 시간이 걸리는 일이라서..
엑셀의 제공 기능이 궁금합니다.
-
재즈피아 2016.03.23 11:45
1. 홈 메뉴에서 "찾기 및 선택" -> "이동 옵션" -> "빈 셀" 선택 후 "확인"
이렇게 하면 빈 셀만 모두 선택이 된 상태가 됩니다.
2. 선택된 빈 셀 아무데서나 "마우스 우클릭" 후 "삭제" 클릭하고 "셀을 위로 밀기" 선택후 "확인" 버튼 클릭하면 됩니다.
이러면 빈 셀만 모두 삭제되고 셀이 위로 올라가면서 빈 셀이 없어집니다.
지후빠님과 클라우디님 너무 감사합니다.
알려주신 매크로는 아직 테스트 전이라 이따 작업해보고 결과 올리도록 하겠습니다.
-
클라우디 2016.03.23 12:08
오.. 엑셀 잘 쓰시네요..
죄송하지만 하나만 더...
이럴 때, 색깔 기준으로 죽이려면 ?
-
재즈피아 2016.03.23 12:26
Sub 동일색상셀선택()
Dim lngColor As Long
Dim rngDb As Range
Dim c As Range
Dim rngUnion As RangelngColor = ActiveCell.Interior.ColorIndex
If lngColor = xlNone Then
MsgBox "현재 셀은 아무런 색상이 없습니다!" & vbCr & "내부에 색상이 있는 셀을 선택하시고 실행하세요!", vbExclamation, Es
ElseSet rngDb = ActiveSheet.UsedRange
Set rngUnion = ActiveCell
With Application
For Each c In rngDb
If c.Interior.ColorIndex = lngColor Then
Set rngUnion = .Union(rngUnion, c)
Else
End If
Next c
End With
rngUnion.Select
End If
End Sub위의 매크로는 동일색상의 셀만 한꺼번에 선택하는 겁니다.
특정 색상의 셀 위에서 위의 매크로를 실행하면
그 셀과 동일한 색상의 셀만 모두 선택이 됩니다.
역시 선택된 색상이 맞는지 확인하시고
"마우스 우클릭"후 "삭제" 클릭하여 "셀을 위로 밀기" 선택 후
"확인" 누르시면 될 거 같네요.
-
클라우디 2016.03.23 12:49
^^
매크로..
매크로에 손이 먼저 가기는 하지만.. (엑셀 쓸 일이 생기면 대량 처리라서... 정작 엑셀 고유 기능은 거의 모름..).
매크로는 시간이 너무 많이 걸려서.. 싫어합니다.
댓글 감사.
그럼.
이만..
-
클라우디 2016.03.23 12:52
아, 그러고..
유니언은 최대값이 30으로 기억합니다만. (하도 오래 전이라서..).
대량 물량 처리 못하져 ^^
그럼 진짜 이만..
-
클라우디 2016.03.23 11:03
다른 매크로 연습해 보았습니다.
(매크로는 좀 짜증스럽지요..)
Dim a, b, c
Set a = CreateObject("scripting.dictionary")
For Each b In [1:1].SpecialCells(2)
c = 1
Do Until b.Offset(c).Value = ""
If a.Exists(b.Offset(c).Value) Then
b.Offset(c).Delete Shift:=xlUp
Else
a.Item(b.Offset(c).Value) = ""
c = c + 1
End If
Loop
Next -
지후빠 2016.03.23 13:16
클라우디님, 색깔 기준 죽이기?
찾기 Ctrl+F
5. 마우스 우측 삭제(Ctrl+-) -> 셀을 위로 밀기
-
클라우디 2016.03.23 13:27
오, 역쉬 엑셀은 막깡해요..
(그런 기능을 알고 계신 분 역시 막깡 !!)
감사합니다.
그럼..
-
재즈피아 2016.03.23 20:17
클라우디님의 매크로로 깔끔하게 자료 정리 마쳤습니다.
클라우디님과 지후빠님 모두 감사드립니다^^
엑셀 고유기능으로 해결은 어려울듯... 중복데이터제거는 셀단위가 아니라 레코드(행) 단위로 실행되는 것으로 알고 있습니다.
행과 열의 방향이 조금 다르지만 다음 매크로를 응용해 보시면 어떨까요? 먼저 영역을 선택후 매크로 실행을 해야 합니다.
셀영역이 매우 클때는 효율이 떨어지겠지만 요즘 PC가 빨라서 어지간해선 체감속도 차이는 별로 나지 않을것 같습니다.
빈셀 없애는 것 등의 기능은 추가/수정하여 사용하시면 될듯 합니다.
Sub delete_same_cell_in_selection()
For Each c1 In Selection
dup = 0
For Each c2 In Selection
If c1 = c2 Then dup = dup + 1
If c1 = c2 And dup > 1 Then c2.Value = Null
Next
Next
End Sub