VBA 기준열 정리 속도업 방법

VBA
작성자
H.B
작성일
2021-12-24 12:28
조회
120
엑셀버전 : M365

운영체제 : 윈도우10

안녕하세요.

첨부파일과 같이 E열 기준으로 뿌려져있는 데이터를 N열 기준으로 땡겨서 재정렬하고 싶습니다.

(데이터 항목이 하기는 당일,1주일,2주일 1개월,1년전,일평년 6개 이지만, 항목이 적거나 늘거나해서 4~8개 항목으로

변동있음)

제 나름대로 FOR문과 IF문으로 순환문을 만들어서 실현했습니다만,  Data가 너무많아서 속도가 대단히 느리네요.

array에 넣어서 뿌려주는등 좀 다른 방법으로 속도를 올려줄 수 있는방법이 없을까요???

전체 7

  • 2021-12-24 14:08

    배열에 데이터를 넣어도,
    요구하신 조건은
    결국 행단위, 셀단위 처리를 하게 되므로
    데이터 정규화가 되지 않으면
    속도가 눈에 띄게 향상되지 않습니다.


  • 2021-12-24 12:43

    농산물의 파종기와 수확에 관련된 것 같은데,
    질문을 이해하지 못했습니다.

    그럼에도 추정하면,
    데이터 셋트가 Null 이 포함된 x,y 매트릭스 형태인데,
    특정 컬럼을 기준으로 정열하고 싶은 것 같군요.

    그리고,
    사용하신 VBA 코드를 잘 이해하지 못 했습니다.
    조건문마다 resize 를 실행하고 cut 을 하고 있습니다.
    (속도에 가장 큰 영향을 문장만 사용하고 있네요)

    사용하는 엑셀버전이 365로 표시하였는데,
    단순이 9번째 컬럼으로 정열하고 싶으면 아래와 같이 해 보세요.

    range("O11").SELECT
    =SORT(E11:M162,9)

    좋은 결과 기대합니다.


  • 2021-12-24 12:50

    답변감사합니다. 설명이 부족했군요 , 하기 그림과 같이 오른쪽으로 땡겨서 데이터를 정렬해서 보고싶습니다.

    (첨부파일 매크로를 돌려봐주시면 바로 작동은 됩니다만, 이 속도를 더 높여주고 싶습니다)


  • 2021-12-24 14:23

    죄송합니다만, sort 상기 방법으로는 적용이 안됩니다만.....

    range("O11").SELECT
    =SORT(E11:M162,9)

    데이터 정규화로는 별도로 해당 데이터를 매일 받아오고 있는 관계로 단순히 기준열을 땡겨주기만 하면 됩니다만 ㅠㅠ 속도가 빠른 방법이 없을까요....


    • 2021-12-24 15:07

      @H.B 님 011 셀에
      =SORT(E11:M162,9) 을 입력해 보세요.
      선택영역의 9번째 컬럼으로 정열을 하겠다는 의미 입니다.

      오류가 있다면, sort 함수를  찾아보시면 될 듯 싶네요


  • 2021-12-24 15:00
    채택된 답변

    배열로 만들었습니다.
    출력쪽을 배열로 하니까 속도차이가 나긴 하네요.

    참조하세요.

    Sub 개선된코드()
    
        Dim arrTemp
        Dim xOffset As Long
        Dim yOffset As Long
        Dim iCol As Long
        Dim iRow As Long
        Dim xLoop As Integer
        Dim yLoop As Integer
        Dim iLoop As Integer
        Dim iTarCol As Integer
        Dim iCount As Integer
        
        
        
        
        iTarCol = 14
        yOffset = 10
        xOffset = 5
    
        iRow = ActiveSheet.Cells(Rows.Count, xOffset).End(xlUp).Row
        iCol = ActiveSheet.UsedRange.Columns.Count  '// ActiveSheet.Cells(iRow, Columns.Count).End(xlToLeft).Column
        
        arrTemp = Range(Cells(yOffset, xOffset), Cells(iRow, iCol)).Value
        
        ReDim iLastCol(UBound(arrTemp, 1))
        
        
        For yLoop = LBound(arrTemp, 1) To UBound(arrTemp, 1)
            
            For iLoop = LBound(arrTemp, 2) To UBound(arrTemp, 2)
                '// 데이터가 없는 컬럼을 찾는다
                If arrTemp(yLoop, iLoop) = "" Or IsEmpty(arrTemp(yLoop, iLoop)) Then Exit For
            Next
            
            '// 데이터가 없는 컬럼이 있다
            iCount = iLoop - 1
            If xLoop < UBound(arrTemp, 2) Then
                For xLoop = UBound(arrTemp, 2) To LBound(arrTemp, 2) Step -1
                
                    If iCount > 0 Then
                        arrTemp(yLoop, xLoop) = arrTemp(yLoop, iCount)
                    Else
                        arrTemp(yLoop, xLoop) = ""
                    End If
                    iCount = iCount - 1
                Next
            End If
        Next
        
        '// 결과 출력
        Range(Cells(yOffset, iTarCol), Cells(yOffset, iTarCol)).Resize(UBound(arrTemp, 1), UBound(arrTemp, 2)).Value2 = arrTemp
        
       
        Erase arrTemp
    
    End Sub

     


  • 2021-12-24 15:47

    대단히 감사합니다 야휘님!!!^^ 좋은 주말되세요~


전체 5,201
번호 카테고리 제목 작성자 작성일 추천 조회
알림
하루 딱 "1분", 진짜 쓰는 엑셀 꿀팁 👉 "오빠두엑셀" 인스타그램 오픈! (30)
트로피 오빠두엑셀 | 2021.10.12 | 추천 23 | 조회 796
트로피 오빠두엑셀 2021.10.12 23 796
공지사항 공지사항
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (21)
오빠두엑셀 | 2021.10.28 | 추천 32 | 조회 2478
트로피 오빠두엑셀 2021.10.28 32 2478
26343 함수/공식
New 전산입고품목과 실제입고품목의 실재고조사관련 양식(함수+피벗테이블)첨언좀 부탁드립니다.도와주세요! 첨부파일 (2)
sunjong**** | 16:42 | 추천 0 | 조회 21
sunjong**** 16:42 0 21
26341 VBA
New VBA 내 배열 통합(쿼리 통합 기능을 VBA에서 구현하고자 합니다.) 첨부파일
병욱 | 16:13 | 추천 0 | 조회 12
병욱 16:13 0 12
26339 VBA
New 많은 텍스트상자안 문자 찾기 (1)
noeu**** | 15:44 | 추천 -1 | 조회 17
noeu**** 15:44 -1 17
26338 함수/공식
New 지정한 일수(days)를 달력에 자동으로 표시 되게끔 설정이 가능한가요? 첨부파일 (1)
말창 | 15:26 | 추천 0 | 조회 18
말창 15:26 0 18
26336 함수/공식
New 셀안 동일 회사명을 순차 카운트를 하고 싶습니다. (3) 답변완료
sickp**** | 15:06 | 추천 0 | 조회 20
sickp**** 15:06 0 20
26334 함수/공식
New 이름만 치면 열 다 띄워주는 방법을 알려주세요 첨부파일 (7) 답변완료
아마테라스 | 14:49 | 추천 0 | 조회 28
아마테라스 14:49 0 28
26329 VBA
New VBA 자동으로 그룹 구분하여 sheet split 기능 행열 전환 관련 질문드립니다. 첨부파일
shon**** | 13:53 | 추천 0 | 조회 11
shon**** 13:53 0 11
26324 기능/도구
New 파일 오류로 열리지 않습니다. (1)
가을남자 | 12:48 | 추천 0 | 조회 16
가을남자 12:48 0 16
26323 함수/공식
New 불려오는 data 행 길이에 따라 자동으로 행길이 바뀌도록 하는 수식/기능 관련 첨부파일 (1)
엑초파 | 12:16 | 추천 0 | 조회 28
엑초파 12:16 0 28
26308 VBA
New pdf 로 자동 저장하고 싶습니다. 첨부파일
wan**** | 04:36 | 추천 0 | 조회 35
wan**** 04:36 0 35
26295 파워쿼리/피벗
New 피벗테이블 '각 필드에 유지할 항목 수'에서 질문입니다. (3)
월마리아 | 2022.01.23 | 추천 0 | 조회 30
월마리아 2022.01.23 0 30
26294 함수/공식
New 합계값이 일치하지 않는 값 구하기! (1)
정해인 | 2022.01.23 | 추천 0 | 조회 34
정해인 2022.01.23 0 34
26290 함수/공식
New 기간구분 IF함수 에러 원인이 뭔지 모르겠어요 (6) 답변완료
마운틴 | 2022.01.23 | 추천 0 | 조회 38
마운틴 2022.01.23 0 38
26285 함수/공식
New 이번주 시작일(월요일), 마지막일(금요일) yyyy-mm-dd 형식으로 출력하는 방법 (1)
joeee | 2022.01.23 | 추천 0 | 조회 37
joeee 2022.01.23 0 37
26284 피벗테이블
New 피벗 테이블 날짜인식 및 월별 그룹화 관련 첨부파일 (3)
baechu9 | 2022.01.23 | 추천 0 | 조회 31
baechu9 2022.01.23 0 31
26278 피벗테이블
New 피벗테이블 영상보면서 따라해보고 있는데요 잘안되요 ㅠ 첨부파일 (1)
희야맘 | 2022.01.23 | 추천 0 | 조회 23
희야맘 2022.01.23 0 23
26276 문서서식
New [조건부 서식] 아직 데이터가 입력되지 않은 칸에 조건부 서식 적용하지 않도록 하기 첨부파일
jo2 | 2022.01.23 | 추천 0 | 조회 33
jo2 2022.01.23 0 33
26268 함수/공식
New 조건부서식 내에서 INDIRECT 함수와 AND 함수를 함께 사용할 수 없나요? (10)
나는나 | 2022.01.22 | 추천 0 | 조회 66
나는나 2022.01.22 0 66
26260 함수/공식
New 각 지점별 연,월 매출의 합을 구하고 싶습니다. 첨부파일 (4) 답변완료
창이 | 2022.01.22 | 추천 1 | 조회 44
창이 2022.01.22 1 44
26246 함수/공식
New 엑셀 월 구하기 주 구하기 질문 입니다. 첨부파일 (3)
천고마비 | 2022.01.22 | 추천 0 | 조회 45
천고마비 2022.01.22 0 45
26243 함수/공식
특정 조건 행 제외 후 다른 시트에 리스트화 첨부파일 (4) 답변완료
상큼한도로시 | 2022.01.21 | 추천 0 | 조회 48
상큼한도로시 2022.01.21 0 48
26239 VBA
재고관리 프로그램에서 검색할 때 체크박스 사용하는 방법이 궁금합니다. (1)
엑셀열공 | 2022.01.21 | 추천 0 | 조회 54
엑셀열공 2022.01.21 0 54
26237 피벗테이블
시간표시막대 질문 (1)
최재영 | 2022.01.21 | 추천 0 | 조회 40
최재영 2022.01.21 0 40
26236 함수/공식
컨트롤 f (찾기) 로 함수의 결과값 검색방법이 있나요? (1)
정지훈 | 2022.01.21 | 추천 0 | 조회 34
정지훈 2022.01.21 0 34
26234 함수/공식
함수를 대량변경하고싶은데 가능한지 문의드립니다. (1)
정지훈 | 2022.01.21 | 추천 0 | 조회 42
정지훈 2022.01.21 0 42
26229 함수/공식
함수를 어떤걸 써야 될지 모르겠습니다. 첨부파일 (3) 답변완료
조커 | 2022.01.21 | 추천 0 | 조회 57
조커 2022.01.21 0 57
26223 VBA
버튼이 클릭이 되지 않습니다. 방법을 모르겠어요. 첨부파일 (5)
다르마 | 2022.01.21 | 추천 0 | 조회 43
다르마 2022.01.21 0 43
26222 VBA
자료찾기 vba 문의드립니다. (2) 답변완료
ㅈㄱㄹ | 2022.01.21 | 추천 0 | 조회 44
ㅈㄱㄹ 2022.01.21 0 44
26220 함수/공식
엑셀 셀값 동일 데이터를 순서대로 카운터 하고 싶습니다. (4) 답변완료
sickp**** | 2022.01.21 | 추천 0 | 조회 41
sickp**** 2022.01.21 0 41
26217 VBA
엑셀 매크로 렉걸림해결방법문의 (1)
dud**** | 2022.01.21 | 추천 -1 | 조회 36
dud**** 2022.01.21 -1 36