Excel & VBA---Brain Training
행열방향으로 만들어진 테이블을 행방향으로 정리하기
아래의 코드를 실행하면
행방향과 열방향으로 구성된 테이블이 만들어진다
이것을 행방향으로만 재구성하기..
아래의 코드를 실행하면 문제의 테이블이 만들어진다
이것을 그림과 같이 원하는 정렬을 해보시는 문제다
Sub makeDummyDataFromERP()
Const LABELS As String = "A,B,C,D,E"
Const SHT_NAME As String = "DummyDatas"
Dim iNumOfDays As Integer
Dim iNextDay As Integer
Dim iNextDayBlock As Integer
Dim iNextLabel As Integer
Dim iRowDatas As Integer
Dim iRow As Integer
Dim sLabels As Variant
Dim iLabelCount As Integer
On Error Resume Next
Application.DisplayAlerts = False
Worksheets(SHT_NAME).Delete
Application.DisplayAlerts = True
iNumOfDays = Int(Rnd() * 10) + 5
iRowDatas = Int(Rnd() * 50) + 50
sLabels = Split(LABELS, ",")
iLabelCount = UBound(sLabels) + 1
With Worksheets.Add
.Name = SHT_NAME
For iRow = 3 To iRowDatas
.Cells(iRow, 1) = getProductName(.Cells(iRow, 1))
Next
For iNextDayBlock = 2 To iNumOfDays * 5 Step 5
iNextDay = iNextDay + 1
.Cells(1, iNextDayBlock) = DateAdd("d", iNextDay, Date)
With .Cells(2, iNextDayBlock).Resize(, iLabelCount)
.Value = sLabels
.Offset(-1).Merge
.Offset(-1).Resize(2).HorizontalAlignment = xlCenter
End With
Next
Dim rAll As Range
Set rAll = .UsedRange
Set rAll = rAll.Offset(2, 1).Resize(rAll.Rows.Count - 2, rAll.Columns.Count - 1)
rAll.Formula = "=INT(RAND()*1000)+1000"
rAll.Value = rAll.Value
End With
End Sub
Private Function getProductName(rX As Range)
On Error Resume Next
Dim iX As Integer
Dim sReturn As String
Dim rFind As Range
Dim rWrittenAlready As Range
Set rWrittenAlready = rX.EntireColumn.Cells(2)
Set rWrittenAlready = rX.Worksheet.Range(rWrittenAlready, rX.Offset(-1))
Do While True
For iX = 1 To 5
sReturn = sReturn & Chr(Int(Rnd() * 26) + 65)
Next
Set rFind = rWrittenAlready.Find(sReturn)
If rFind Is Nothing Then getProductName = sReturn: Exit Function
Loop
End Function
위의 것을 실행하면 아래와 같이 만들어진다
위의 그림의 내용을 아래와 같이 재정리하기..
더운 날씨에 더위를 잊는 좋은 방법은 집중하는 것..
집중하시고 풀어 보시기를..
***[LOG-IN]***