여기에 데이터 포맷하는 VBA 루틴입니다 :
- 가 소스 데이터가
- 장소는
F1
에서 활성 시트의 시작에 결과 A1
에서 시작, 현재 시트에 가정 - 사용자의 요구에 맞게 조정을
내가 이것을 실행하기위한 '형식 불일치'오류가 몇 가지 이유를 들어
Sub SummariseList()
Dim rSrc As Range
Dim rDst As Range
Dim vSrc As Variant
Dim vDst() As Variant
Dim srcCol As Long, srcRow As Long
Dim dstCol As Long, dstRow As Long
Dim ID As Long
Dim i As Long
Set rSrc = Range([A1].End(xlToRight).Offset(1, 0), [A2].End(xlDown))
vSrc = rSrc
Set rDst = [F2]
' Count IDs and events '
dstRow = 1
dstCol = 1
i = 1
For srcRow = 2 To UBound(vSrc, 1)
If vSrc(srcRow, 1) = vSrc(srcRow - 1, 1) Then
i = i + 1
Else
dstRow = dstRow + 1
If dstCol < i Then dstCol = i
i = 1
End If
Next
If dstCol < i Then dstCol = i
ReDim vDst(1 To dstRow, 1 To dstCol + 1)
' Output table labels '
rDst.Offset(-1, 0) = "ID"
For i = 1 To dstCol
rDst.Offset(-1, i) = "Event_" & i
Next
' Create output data '
ID = vSrc(1, 1)
vDst(1, 1) = ID
dstRow = 1
dstCol = 2
For srcRow = 1 To UBound(vSrc, 1)
If vSrc(srcRow, 1) <> ID Then
' update vDst '
ID = vSrc(srcRow, 1)
dstCol = 2
dstRow = dstRow + 1
vDst(dstRow, 1) = ID
End If
For srcCol = 2 To UBound(vSrc, 2)
If vSrc(srcRow, srcCol) <> "" Then
vDst(dstRow, dstCol) = Chr(srcCol + 63)
dstCol = dstCol + 1
Exit For
End If
Next
Next
' Place result on sheet '
rDst.Resize(dstRow, dstCol - 1) = vDst
End Sub
매크로. – knarusk
어떤 행에 있습니까? 한 가지 가능성은 ID의 숫자가 아닐 경우 'Long ID'대신 'Dim ID as Variant'를 사용하는 것입니다. –