VB(A)/당근쨈 & Chronicle

[& Chronicle] 표 구조 바꾸기

당근쨈 2017. 5. 11. 21:26

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=271030829&qb=7Zqo7Jyo7KCB&enc=utf8&section=kin.qna&rank=80&search_sort=0&spq=0


위의 표를 아래처럼 변경하는 질문입니다.

행방향으로 된 데이터를 열방향으로 바꾸면 됩니다.


Chronicle님은 OFFSET, INDEX, MATCH, LARGE 함수와 보조열로 해결하였습니다.

http://blog.naver.com/asaph16/221000026754


제가 풀이한 과정은 아래와 같습니다.

모든 데이터를 한 줄로 풀어낸 후에 빈 칸을 삭제하는 과정을 거쳤습니다.


오늘도 큰 힘 들이지 않고 코드 하나 날로 먹었네요.

Sub Macro()
 
    Dim SingleRange As Range
    Dim AllName As Range
    Dim tmp
    Dim i As Integer
    Dim PasteRange As Range
    
    '이름 영역 및 붙여넣기 셀 지정
    Set AllName = Range("B2", Range("B2").End(4))
    Set PasteRange = Range("B9")
    
    '기존자료 삭제
    With PasteRange
        If .Value <> "" Then .CurrentRegion.ClearContents
    End With
    
    '표의 모든 데이터를 한 줄로 출력
    For Each SingleRange In AllName
        
        tmp = SingleRange.Offset(, 1).Resize(, 4)
        
        With PasteRange
        
            With .Offset(i).Resize(4)
                .Value = SingleRange
                .Offset(, 1= Application.Transpose(Range("C1:F1"))
                .Offset(, 2= Application.Transpose(tmp)
            End With
            
            i = .CurrentRegion.Rows.Count
            Erase tmp
            
        End With
        
    Next SingleRange
    
    '빈셀 삭제
    PasteRange.CurrentRegion.SpecialCells(4).EntireRow.Delete
    
End Sub
 
cs

표+구조+바꾸기.xlsm