코드는 VBA에 있습니다. 대신 복사/붙여 넣기를하는
는, 상기 범위의 함량 (즉 어레이)의 실제 코드
Option Explicit
Sub Tabulate(ByVal src As Range, ByVal splitSize As Integer, _
ByVal destRangeStart As Range)
Dim i As Integer
Dim rangeToCopy As Range
Dim rangeToPasteOver As Range
Set rangeToCopy = src
Set rangeToPasteOver = destRangeStart
Debug.Print Now
Application.ScreenUpdating = False
For i = 1 To src.Cells.Count Step splitSize
' rangeToCopy.Resize(splitSize).Copy
' rangeToPasteOver.PasteSpecial Transpose:=True
rangeToPasteOver.Resize(ColumnSize:=splitSize).Value = _
Transform2DArray(rangeToCopy.Resize(splitSize).Value)
Set rangeToCopy = rangeToCopy.Offset(splitSize)
Set rangeToPasteOver = rangeToPasteOver.Offset(1)
Next
Application.ScreenUpdating = True
Debug.Print Now
End Sub
Function Transform2DArray(ByVal src As Variant) As Variant
Dim returnValue As Variant
Dim rowCtr As Long
Dim colCtr As Long
Dim destColCtr As Long
Dim destRowCtr As Long
Dim lRows As Long
Dim uRows As Long
Dim lCols As Long
Dim uCols As Long
lRows = LBound(src, 1)
uRows = UBound(src, 1)
lCols = LBound(src, 2)
uCols = UBound(src, 2)
ReDim returnValue(lCols To uCols, lRows To uRows)
destRowCtr = lCols
For colCtr = lCols To uCols
destColCtr = lRows
For rowCtr = lRows To uRows
returnValue(destRowCtr, destColCtr) = src(rowCtr, colCtr)
destColCtr = destColCtr + 1
Next
destRowCtr = destRowCtr + 1
Next
Transform2DArray = returnValue
End Function
질문 더 흥미를 변환한다. 무엇을 시도 했습니까? 시도했을 때 어떤 일이 일어 났습니까? –
@pnuts : 예 1x3000을 6x6x5로 변환하고 싶습니다. – slyclam
@TimWilliams : 내 질문과 포함 된 코드를 수정했습니다. 가능한 경우 도와주세요. – slyclam