나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 빈스 (fineday365)

추천:  2
파일:     예제(7).xlsm (15.3KB) 조회:  1725
제목:   윗셀과 값이 같으면 삭제하기-VBA
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(2013):

* 아래줄에 질문을 작성하세요 >>

안녕하세요....

아래와 왼쪽과 같이 셀값이 있을때, 아래의 중간과 같은 결과를 가지고 싶은데요...
윗셀과 셀값이 같으면 값이 안보이게 하는건 문제가 없는데,,,
삭제하기(Clearcontents)를 하려고 하니, for each를 쓰면 순차실행으로 인해 아래 제일 오른쪽과 같은 결과가 나오게 되네요...

이거 어떻게 해야 하나요? VBA 초보라... 
 
AAA  BBB  CCC         AAA  BBB  CCC        AAA BBB CCC
AAA  BBB  CCC
AAA  BBB  CCC                                AAA BBB CCC 
DDD  EEE  FFF         DDD  EEE  FFF        DDD EEE FFF
DDD  EEE  FFF
DDD  EEE  FFF                                DDD EEE FFF

 
[불량 게시물 신고]  
조삿갓둘째 줄 루프를 돌 때 이미 둘째 줄의 값이 삭제되어버렸기 때문에, 세째 줄은 삭제된 상태의 둘째 줄과 비교하면 다른 값이라고 판단하겠죠?
루프를 아래에서부터 거꾸로 돌리면 되겠네요.
07-23 (23:41)
삭제 ■신고
조삿갓Sub 위셀값동일값삭제()

 Dim 셀 As Range
 Dim r As Long
 Dim c As Long
 Dim re As Long
 Dim ce As Long

 Application.ScreenUpdating = False
 On Error Resume Next

 With Selection
    r = .Row
    c = .Column
    re = .Rows.Count + r - 1
    ce = .Columns.Count + c - 1
 End With

 For c = c To ce
   For r = re To r Step -1
     If Cells(r, c) = Cells(r - 1, c) Then Cells(r, c).ClearContents
   Next r
 Next c

Application.ScreenUpdating = True
End Sub
07-23 (23:42)
삭제 ■신고
        
  

작성일 : 2018-07-23(14:01)
최종수정일 : 2018-07-23(14:01)