CAFE

숨겨진셀을 제외하고 순번매기기

작성자Mr_Candy|작성시간12.01.29|조회수3,205 목록 댓글 13

오늘은 다른 엑셀 커뮤니티에서 질문을 너무 나도 정성스럽고 재미나게 올려주신 분이 계서서

거기에 올라왔던 질문내용과 함께 두가지 해법에 대한 팁을 올려 봅니다.

Subtotal 함수는 필터관련 함수로써 =Subtotal(함수,범위) 와 같은 구조로 되어 있는데..

이 함수가 재미난 부분은 첫번째 인수에서 숨겨진행을 포함할 것인지? 아닌지를 사용자가 선택하여

사용할수 있다는 것 입니다.

그러나 자료가 방대한데다 단순히 필터의 순번으로써 Subtotal 함수를 남용(?) 하였다가는 오랜 인내의

고통을 경험할지도 모른답니다.

그래서 이때는 결국은 VBA의 힘을 빌려다 써야 합니다. 첨부 파일에서 VBA는 워크시트의 Calculate 이벤트를

이용하였습니다.

 

 

Sub Numbering()
    Dim rngT As Range
    Dim r    As Range
    Dim n    As Long
    Dim lngR As Long
   
    '맨마지막행 정보를 담구
   
    lngR = Range("c1048576").End(xlUp).Row
   
    ' 화면갱신을 껏다가
    Application.ScreenUpdating = False
   
    ' 필터가 된 상태인지 아닌지를 판단하여
    ' 필터가 해제된 상태(전체데이터가 펼쳐졌는지) 이면
    ' 채우기-> 연속데이타 기능을 이용하여 번호를 채워넣고
    If Application.Subtotal(103, Columns(3)) = lngR Then
        Range("a2").DataSeries Rowcol:=xlColumns, Type:=xlLinear, _
            Date:=xlDay, Step:=1, Stop:=lngR - 1, Trend:=False
           
    ' 그렇지 않을 경우는 화면에 A열데이터 범위에서
    ' 화면에 보이는 셀만 순번을 채워 넣는다.
    Else
        Set rngT = Range("a2:a" & lngR).SpecialCells(xlCellTypeVisible)
        For Each r In rngT
            n = n + 1
            r.Value = n
        Next
    End If
   
    ' 화면갱신을 살려준다.
    Application.ScreenUpdating = True
End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

첨부파일 subtotal.xlsm

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자ex007 | 작성시간 14.03.13 알기쉽고 재미있는 포스팅 감사합니다
  • 작성자Y소금 | 작성시간 15.01.09 잘보구갑니다.^^
  • 작성자캘비야 행복해 | 작성시간 15.08.06 잘 보았습니다.
    감사합니다.
  • 작성자팩토리아 | 작성시간 15.10.03 유용한자료 감사합니다
  • 작성자딸기복숭아 | 작성시간 16.05.04 유용한 정보 잘 받아갑니다. 감사합니다.^^
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼