그래서 나는이 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