vba를 다루는 초보입니다. 첨부된 파일같이 변환해야 하는데 도움이 필요합니다.
3행씩 1 2 3으로 하여 정렬해서 사용했으나 인원이 100명이 넘다보니 어렵습니다.
커뮤니티 전체
3행씩 작업한 것을 1행으로 변환(vba)
📅 2025년 08월 27일 17:16
👁 조회 322
댓글을 작성하려면 로그인이 필요합니다.
게시글 목록
페이지 1 / 970게시글 제목
날짜
조회
추천
12시간 전
조회 58
0
답글 1
2일 전
조회 172
0
답글 7
2일 전
조회 113
0
답글 2
3일 전
조회 183
0
답글 1
3일 전
조회 171
0
답글 7
4일 전
조회 211
0
답글 3
해결
4일 전
조회 155
0
답글 1
4일 전
조회 188
0
답글 1
4일 전
조회 182
0
답글 6
해결
4일 전
조회 184
0
답글 2
5일 전
조회 264
0
답글 3
답변 완료
시트 복사했는데 에러가 나요ㅠㅠ
5일 전
조회 213
0
답글 8
해결
답변 완료
소수점 합계값 오류
5일 전
조회 191
0
답글 2
해결
답변 완료
날짜순대로 정렬하기
6일 전
조회 248
0
답글 3
해결
6일 전
조회 224
0
답글 1
6일 전
조회 203
0
답글 3
해결
6일 전
조회 281
0
답글 6
6일 전
조회 231
0
답글 4
2026.02.02
조회 246
0
답글 0
2026.02.01
조회 187
0
답글 2

배열에 대해서 For x = 1 to Ubound(Data, 1) Step 3 처럼 3줄 단위로 작업을 하고,
for 문 안에서 3개 행을 하나의 행으로 변형하는 작업을 하세요.
----------------------------
아래 코드 중 변경할 부분
시트명: Sheet1
데이터 범위: A1:M15
결과 출력할 첫 셀: A18
-----------------------------
Sub Macro1()
Dim Asht As Worksheet
Dim rngAl As Range, rngIP As Range
Dim xStep%, cntCns%, xGroups%, xGi%, Cn%, xSi As Integer
Dim cntRws&, xR As Long
Dim vDB, Ary() As Variant
Set Asht = Sheets("Sheet1")
Set rngAl = Asht.Range("A1:M15")
Set rngIP = Asht.Range("A18")
xStep = 3
cntRws = rngAl.Rows.Count
cntCns = rngAl.Columns.Count
xGroups = cntRws \ xStep
If xGroups = 0 Then Exit Sub
vDB = rngAl.Value2
ReDim Ary(1 To xGroups, 1 To xStep * cntCns)
Application.ScreenUpdating = False
For xGi = 0 To xGroups - 1
xR = 1
For Cn = 1 To cntCns
For xSi = 1 To xStep
Ary(xGi + 1, xR) = vDB(xGi * xStep + xSi, Cn)
xR = xR + 1
Next xSi
Next Cn
Next xGi
With rngIP.Resize(xGroups, xStep * cntCns)
.ClearContents
.Value = Ary
End With
Application.ScreenUpdating = True
End Sub
혹시 365버전이면 ..
=LET(rngAl,A1:M15, xStep,3, xCns,COLUMNS(rngAl), xSeqs,SEQUENCE(QUOTIENT(ROWS(rngAl),xStep),,1,xStep),
WRAPROWS(DROP(REDUCE("",xSeqs,LAMBDA(xAcc,iseq, VSTACK(xAcc,TOCOL(INDEX(rngAl,iseq+SEQUENCE(xStep)-1,SEQUENCE(,xCns)),0,TRUE)))),1),xStep*xCns))
=LET(rngAl,A1:M15,
DROP(REDUCE("",SEQUENCE(COLUMNS(rngAl)),LAMBDA(xAcc,iseq, HSTACK(xAcc,WRAPROWS(INDEX(rngAl,,iseq),ROWS(A1:A3))))),,1))
=LET(Area,$A$1:$M$15, step,3, seq,SEQUENCE(ROWS(Area)/step,,0,step), DROP(REDUCE("",seq,LAMBDA(a,b,VSTACK(a, TOROW( OFFSET(Area, b,0,step,),,TRUE )))),1))