자료실

부자는 돈을 써서 시간을 아끼지만 가난한 사람은 시간을 써서 돈을 아낀다

vb6.0/vba

IT HUB를 찾아주셔서 감사합니다.

vb6.0/vba [vba] 세로 데이터를 날자 기준으로 가로로 정리 및 가로데이터 오름차순 정렬

페이지 정보

profile_image
작성자 하나를하더라도최선을
댓글 0건 조회 6,007회 작성일 20-09-04 14:42

본문

Q:지식인 질문 내용입니다.

아래와 같이 왼쪽데이터를 날짜를 기준으로 오른쪽처럼 정리를 하고자 합니다.

A:아래는 답변내용입니다.

왼쪽 데이터를 매크로 실행 후 오른쪽과 같은 결과가 나왔습니다.

아래는 액셀 vba 매크로 소스코드입니다.


Sub program1472_com()
    Dim C As Range, R As Range
    Set C = ActiveSheet.UsedRange.Offset(1).Resize(, 1'// 순환할 날짜가 있는 셀
    [i1].CurrentRegion.ClearContents    '// 기존 결과값 모두 초기화
    [i1].Resize(, 4).Value = [a1].Resize(, 4).Value '// 해더를 복사해서 넣음
    For Each C In C '// 날짜가 있는 셀을 순환하면서
        If Len(C) > 0 Then  '// 빈셀이 아니면
            Set R = Columns("I").Find(what:=C, LookIn:=xlValues, LookAt:=xlWhole)   '// I열에서 같은 날짜를 찿음
            If R Is Nothing Then    '// 찿는 날짜가 없으면
                Cells(Rows.Count, "I").End(3)(2).Resize(, 4).Value = C.Resize(, 4).Value    '// 마지막 다음행에 추가
            Else    '// 찿는 값이 있으면
                Set R = R.End(xlToRight).Offset(, 1)    '// 오른쪽 긑 다음셀을 찿음
                R.Resize(, 3).Value = C.Offset(, 1).Resize(, 3).Value   '// 값을 붙여넣음
                Cells(1, R.Column).Resize(, 3).Value = [B1:D1].Value    '// 해더를 넣음
            End If
        End If
    Next
    With ActiveWorkbook.ActiveSheet.Sort    '// 정렬에 대해서
        .SetRange [i1].CurrentRegion    '// I1셀에 인접한 모든셀을
        .Orientation = xlLeftToRight    '// 왼쪽에서 오른쪽으로 정렬
        .Apply
    End With
End Sub

댓글목록

등록된 댓글이 없습니다.