|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(95,97,2000,xp,2003,2007):
* 아래줄에 질문을 작성하세요 >>
공장마다 취급하는 품목들이 있는데 규격은 동일합니다.
따라서 500개가 1상자인데 품목마다 1상자 포장에 필요한 수량 만큼씩
분류되는 엑셀 시트를 만들려고 합니다.
일단 임으로 보고 싶은 결과 값을 시트로 만들었습니다.
아무리 생각해봐도 마땅히 떠오르지 않네요.
도움 부탁드립니다.
==============[하나마루님 글에 대한 답변입니다]==============
첨부화일 참고하세요....
Sub getBoxCount()
Dim rTable As Range, rX As Range
Dim colX As New Collection, vX
Dim rFind As Range, sAddr As String
Dim lTot As Long, lTemp As Long
Dim iCol As Integer, iX As Integer, iRept As Integer
Set rTable = ActiveSheet.Range("A4")
Set rTable = Range(rTable, rTable.End(xlDown))
Application.ScreenUpdating = False
On Error Resume Next
For Each rX In rTable
colX.Add rX.Value, rX.Value
Next
On Error GoTo 0
For Each vX In colX
iCol = 3
Set rFind = rTable.EntireColumn.Find(vX, LookAt:=xlWhole)
If Not rFind Is Nothing Then
sAddr = rFind.Address
lTemp = 0
Do
lTot = rFind.Cells(1, 3)
iRept = Int(lTot / 500)
For iX = 1 To iRept
iCol = iCol + IIf(lTemp = 0, 1, 0)
rFind.Cells(1, iCol) = (500 - lTemp)
lTot = lTot - (500 - lTemp)
lTemp = 0
Next
If lTot > 0 Then
iCol = iCol + 1
rFind.Cells(1, iCol) = lTot
lTemp = lTot
End If
Set rFind = rTable.EntireColumn.FindNext(rFind)
Loop While Not rFind Is Nothing And rFind.Address <> sAddr
End If
Next
Application.ScreenUpdating = False
End Sub
|
|