여러 열이 있는 하나의 행을 여러 행으로 분할

여러 열이 있는 하나의 행을 여러 행으로 분할

그래서 나는이 VBA 코드를 선택했습니다 ...

Sub NewLayout()
    For i = 2 To Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
        For j = 0 To 2
        If Cells(i, 3 + j) <> vbNullString Then
            intCount = intCount + 1
            Cells(i, 1).Copy Destination:=Cells(intCount, 10)
            Cells(i, 2).Copy Destination:=Cells(intCount, 11)
            Cells(i, 3 + j).Copy Destination:=Cells(intCount, 12)
            Cells(i, 6 + j).Copy Destination:=Cells(intCount, 13)
        End If
        Next j
    Next i
End Sub

다음과 같은 시나리오가 있는데 매크로가 원활하게 작동하지 않습니다(아무것도 코딩하는 데 익숙하지 않기 때문에). 위의 코드를 파악하려고 노력했지만 열이 해당 순서로 작동하는 방식에 대해서는 이해가 되지 않습니다. 누구든지 도와주실 수 있나요?

이 데이터가 있어요

Company  Code      Store1   Store Hours1    Store2   Store Hours2    Store3   Store Hours3
90       920016    BAY0     40              BCR0     35              BES0     20
90       920052    BAY0     40              BCR0     35              BES0     20
90       920054    BAY0     40              BCR0     35              BES0     20
90       920058    BAY0     40              BCR0     35              BES0     20

다음과 같이 행에 열이 있어야 합니다.

90       920016    BAY0    40
90       920016    BCR0    35
90       920016    BES0    20
90       920052    BAY0    40
90       920052    BCR0    35
90       920052    BES0    20
90       920054    BAY0    40
90       920054    BCR0    35
90       920054    BES0    20

누구든지 이것에 대해 도움을 줄 수 있습니까?

답변1

따라서 수학을 계산하는 대신 세 번째 열부터 시작하는 열을 2단계씩 진행해 보겠습니다. 이렇게 하면 수학이 좀 더 간단해집니다.

Sub NewLayout()
Dim ws As Worksheet
Dim i As Long, j As Long
Dim intCount As Long

For i = 2 To Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
    For j = 3 To 7 Step 2
        If Cells(i, j) <> vbNullString Then
            intCount = intCount + 1
            Cells(i, 1).Copy Destination:=Cells(intCount, 10)
            Cells(i, 2).Copy Destination:=Cells(intCount, 11)
            Cells(i, j).Copy Destination:=Cells(intCount, 12)
            Cells(i, j + 1).Copy Destination:=Cells(intCount, 13)
        End If
    Next j
Next i
End Sub

여기에 이미지 설명을 입력하세요

관련 정보