|
감사합니다.
많은 도움되었습니다.
하나의 행이 아니라 여려 행인 경우 어떻게 해야할지 한번 더 부탁드립니다.
파일 첨부했습니다.
==============[길인영님 글에 대한 답변입니다]==============
첨부파일 참조하세요..
Sub UserSplit02()
Dim rData As Range, rRow As Range, rTg As Range
Dim iMax As Integer
Dim vTempLf, vResult(), vTrans
Dim iX As Integer, iY As Integer, iNo As Integer
Set rTg = Range("N1")
rTg.CurrentRegion.Clear
Set rData = ActiveSheet.Range("A1").CurrentRegion
For Each rRow In rData.Offset(1).Resize(rData.Rows.Count - 1).Rows
iMax = getMaxUbound(rRow)
For iX = 0 To iMax
iNo = iNo + 1
ReDim Preserve vResult(1 To 3, 1 To iNo) ' 임시결과값 저장하기 위한 변수
For iY = 1 To rRow.Columns.Count
vTempLf = Split(rRow.Cells(1, iY), vbLf)
If iX <= UBound(vTempLf) Then
vResult(iY, iNo) = vTempLf(iX)
Else
vResult(iY, iNo) = vResult(iY, iNo - 1)
End If
Next
Next
Next
vTrans = WorksheetFunction.Transpose(vResult) ' 행열 전환
rData.Rows(1).Copy rTg
rTg.Offset(1).Resize(UBound(vTrans, 1), UBound(vTrans, 2)) = vTrans
With rTg.CurrentRegion.Borders
.LineStyle = xlContinuous
.ColorIndex = 48
.Weight = xlThin
End With
End Sub
Function getMaxUbound(rRow As Range)
Dim rX As Range
Dim iMax As Integer, iX As Integer
For Each rX In rRow.Cells
iX = UBound(Split(rX, vbLf))
If iMax < iX Then iMax = iX
Next
getMaxUbound = iMax
End Function |
|