여기서 코드를 요청하는 것은 사용자가 VBA 코딩에 대한 기본 지식이 있다는 것을 나타내므로 특정 요구에 맞게 조정할 수있는 부분적인 해결책을 제공 할 것입니다. 비판적이고 종종 부족한 요구 사항에 대한 좋은 예를 제공했습니다. 그들은 동일하지만, 그들이 독특했다면 더 좋았을 것입니다.
매크로는 워크 시트에 가지고있는 것을 재현해야합니다. 특히 데이터가 시트 "Now"의 열 A와 B에 있다고 가정하고 "After"시트에 결과를 씁니다. 그러나 당신은 아마도 약간의 연구를 통해 그것을 어떻게 바꿀 수 있는지 알아낼 수 있어야합니다. 이 코드를 일반 모듈에 넣으십시오.
Option Explicit
Sub TransposeMemberList()
Dim sColHdrs() As String
Dim vSrc As Variant
Dim vRes() As Variant
Dim I As Long, J As Long, K As Long
Dim lCols As Long
Dim lMembers As Long
Dim wsSrc As Worksheet, wsRes As Worksheet
Dim rDest As Range
'Set results Range First Cell
Set wsRes = Worksheets("After")
Set rDest = wsRes.Range("A1")
'get Source Data
Set wsSrc = Worksheets("Now")
With wsSrc
vSrc = .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)).Resize(columnsize:=2)
End With
'Assume colheaders all exist in first record
'Col Hdr 1 = Name
'How many columns? Count to first blank in col A
With wsSrc.Cells.Columns(1)
lCols = .Find(what:="", after:=[A1], LookIn:=xlValues, _
lookat:=xlWhole, searchorder:=xlByRows, _
searchdirection:=xlNext).Row - 1
End With
'How many Members?
'Count number of instances of first named column
lMembers = WorksheetFunction.CountIf(wsSrc.Cells.Columns(1), vSrc(2, 1))
'Populate Results Array
'First do column headers
ReDim vRes(1 To lMembers + 1, 1 To lCols)
vRes(1, 1) = "Name"
For I = 2 To lCols
vRes(1, I) = vSrc(I, 1)
Next I
'Now do the columns for each memeber
'I = Member Rows in "Now"
'J = Member Row in "After"
'K = Member Column
I = 1
For J = 1 To lMembers
vRes(J + 1, 1) = vSrc(I, 1)
For K = 2 To lCols
I = I + 1
vRes(J + 1, K) = vSrc(I, 2)
Next K
'set I to next member by checking for first column header
Do Until vSrc(I, 1) = vSrc(2, 1)
I = I + 1
If I > UBound(vSrc) Then Exit Do
Loop
I = I - 1
Next J
Set rDest = rDest.Resize(rowsize:=UBound(vRes, 1), columnsize:=UBound(vRes, 2))
rDest.EntireColumn.Clear
rDest = vRes
rDest.EntireColumn.AutoFit
End Sub
예가 제시 한대로 데이터가 형성 되었습니까? 모든 "열 머리글"은 동일합니다. 언제나 같은 순서로? 빈 행으로 삭제할 3 개의 행이있는 원하는 모든 헤더가 연속적입니까 (데이터에 빈 행 없음)? –
안녕하세요. 돌아와 줘서 고마워. 데이터가 잘 형성되고 B 열에 빈 필드가있을 수 있지만 A 열은 항상 그 패턴을 따릅니다. – stevieb123