|
- Sub Test()
- Dim arrSource As Variant, arrTemp As Variant, arrResult As Variant
- Dim lngRows As Long, lngCols As Long
- Dim lngR As Long, lngC As Long
- Dim lngRow As Long, lngCol As Long
- Dim intIN As Integer, intOut As Integer
- Dim lngIndex As Long
-
- arrSource = Sheet1.Range("A1").CurrentRegion
- lngRows = UBound(arrSource)
- lngCols = UBound(arrSource, 2)
- lngIndex = 1
- ReDim arrResult(1 To 4, 1 To lngIndex)
- arrResult(1, 1) = "商品编号"
- arrResult(2, 1) = "调出门店"
- arrResult(3, 1) = "调入门店"
- arrResult(4, 1) = "调入数量"
-
- For lngRow = 2 To lngRows
- ReDim arrTemp(1 To lngCols - 2, 1 To 5)
- intIN = 1
- intOut = 1
- For lngCol = 2 To lngCols
- If arrSource(lngRow, lngCol) < 0 Then
- arrTemp(intOut, 1) = arrSource(lngRow, 1)
- arrTemp(intOut, 2) = arrSource(1, lngCol)
- arrTemp(intOut, 3) = arrSource(lngRow, lngCol)
- intOut = intOut + 1
- ElseIf arrSource(lngRow, lngCol) > 0 Then
- arrTemp(intIN, 1) = arrSource(lngRow, 1)
- arrTemp(intIN, 4) = arrSource(1, lngCol)
- arrTemp(intIN, 5) = arrSource(lngRow, lngCol)
- intIN = intIN + 1
- End If
- Next
-
-
- For lngR = 1 To intOut - 1
- For lngC = 1 To intIN - 1
- If arrTemp(lngC, 5) > 0 Then
- lngIndex = lngIndex + 1
- ReDim Preserve arrResult(1 To 4, 1 To lngIndex)
- arrResult(1, lngIndex) = arrTemp(lngR, 1)
- arrResult(2, lngIndex) = arrTemp(lngR, 2)
- arrResult(3, lngIndex) = arrTemp(lngC, 4)
- If (arrTemp(lngR, 3) + arrTemp(lngC, 5)) >= 0 Then
- arrResult(4, lngIndex) = arrTemp(lngR, 3) * -1
- arrTemp(lngR, 3) = 0
- arrTemp(lngC, 5) = arrTemp(lngR, 3) + arrTemp(lngC, 5)
- Else
- arrResult(4, lngIndex) = arrTemp(lngC, 5)
- arrTemp(lngR, 3) = arrTemp(lngR, 3) + arrTemp(lngC, 5)
- arrTemp(lngC, 5) = 0
- End If
- End If
- Next
- Next
- Next
-
- arrResult = Application.WorksheetFunction.Transpose(arrResult)
- Sheet2.UsedRange.ClearContents
- Sheet2.Range("K1").Resize(lngIndex, 4) = arrResult
- End Sub
复制代码 |
评分
-
1
查看全部评分
-
|