倉(cāng)庫(kù)打印排版


'需求

'每頁(yè)打印50輸出50行(1行標(biāo)題+49行數(shù)據(jù))

'小類和SKU放在A/B列

'標(biāo)題放在每頁(yè)第一行

'店號(hào)/數(shù)量/余量放在C/D/E列,當(dāng)放不下時(shí)空列再放置(G/H/I K/L/M)還不夠放時(shí)就換頁(yè)

'統(tǒng)計(jì)每個(gè)SKU出現(xiàn)的次數(shù)

'對(duì)數(shù)據(jù)行用下劃線標(biāo)識(shí)

Option Explicit

Sub Print_Detail()

? ? Dim i&, j&, t&, x&, arr, d As Object, arr_Items, arr_Keys, arr_Temp(), xrr(0 To 10 ^ 4, 1 To 15), arr_Part, Position&, s&, arr_Field

? ? Application.ScreenUpdating = False

? ? Cells.Clear

? ? On Error Resume Next

? ? arr = Sheets("明細(xì)").[a1].CurrentRegion

? ? Set d = CreateObject("scripting.dictionary")

? ? For i = 2 To UBound(arr)

? ? ? ? d(arr(i, 1) & "|" & arr(i, 8)) = d(arr(i, 1) & "|" & arr(i, 8)) + 1? ? ? '對(duì)每個(gè)SKU計(jì)數(shù)

? ? Next i

? ? arr_Items = d.Items()

? ? arr_Keys = d.keys()

? ? ReDim arr_Temp(1 To 100, 1 To 4)

? ? For i = 0 To UBound(arr_Items)

? ? ? ? If arr_Items(i) Mod 147 = 0 Then? ? ? ? ? ? ? ? ? ? ? ? '當(dāng)正好充滿列數(shù)時(shí)

? ? ? ? ? ? For j = 1 To arr_Items(i) \ 147

? ? ? ? ? ? ? ? t = t + 1

? ? ? ? ? ? ? ? arr_Temp(t, 1) = Split(arr_Keys(i), "|")(0)? ? '小類

? ? ? ? ? ? ? ? arr_Temp(t, 2) = Split(arr_Keys(i), "|")(1)? ? 'SKU

? ? ? ? ? ? ? ? arr_Temp(t, 3) = 147? ? ? ? ? ? ? ? ? ? ? ? ? ? '每頁(yè)數(shù)據(jù)量

? ? ? ? ? ? Next j

? ? ? ? Else

? ? ? ? ? ? For j = 1 To arr_Items(i) \ 147

? ? ? ? ? ? ? ? t = t + 1

? ? ? ? ? ? ? ? arr_Temp(t, 1) = Split(arr_Keys(i), "|")(0)

? ? ? ? ? ? ? ? arr_Temp(t, 2) = Split(arr_Keys(i), "|")(1)

? ? ? ? ? ? ? ? arr_Temp(t, 3) = 147

? ? ? ? ? ? Next j

? ? ? ? ? ? t = t + 1

? ? ? ? ? ? arr_Temp(t, 1) = Split(arr_Keys(i), "|")(0)

? ? ? ? ? ? arr_Temp(t, 2) = Split(arr_Keys(i), "|")(1)

? ? ? ? ? ? arr_Temp(t, 3) = arr_Items(i) Mod 147

? ? ? ? End If

? ? Next i

? ? For i = 1 To t

? ? ? ? If arr_Temp(i, 3) > 49 Then? ? ? ? ? ? ? ? ? ? ? ? ? ? '每頁(yè)數(shù)據(jù)行數(shù)

? ? ? ? ? ? arr_Temp(i, 4) = 49

? ? ? ? Else

? ? ? ? ? ? arr_Temp(i, 4) = arr_Temp(i, 3)

? ? ? ? End If

? ? Next i

? ? For i = 1 To t

? ? ? ? For j = 1 To arr_Temp(i, 4)

? ? ? ? ? ? xrr((i - 1) * 50 + j, 1) = arr_Temp(i, 1)

? ? ? ? ? ? xrr((i - 1) * 50 + j, 2) = arr_Temp(i, 2)

? ? ? ? Next j

? ? Next i

? ? arr_Part = Application.Index(xrr, , 2)

? ? Dim s1, s2, yrr(1 To 200, 1 To 3)

? ? For i = 2 To UBound(arr)

? ? ? ? Position = Application.Match(arr(i, 8), arr_Part, 0)

? ? ? ? s = s + 1

? ? ? ? xrr(Position + ((s - 1) \ 147) * 50 + (s - 1) Mod 49 - 1, ((s - 1) \ 49 Mod 3) * 4 + 3) = arr(i, 12)

? ? ? ? xrr(Position + ((s - 1) \ 147) * 50 + (s - 1) Mod 49 - 1, ((s - 1) \ 49 Mod 3) * 4 + 4) = arr(i, 10)

? ? ? ? xrr(Position + ((s - 1) \ 147) * 50 + (s - 1) Mod 49 - 1, ((s - 1) \ 49 Mod 3) * 4 + 5) = arr(i, 11)

? ? ? ? If s = arr_Items(x) Then s = 0: x = x + 1

? ? Next i

? ? arr_Field = [{"小類","SKU","店號(hào)","數(shù)量","余量"}]

? ? For i = 1 To t

? ? ? ? If xrr((i - 1) * 50 + 1, 1) <> "" Then

? ? ? ? ? ? xrr((i - 1) * 50, 1) = arr_Field(1)

? ? ? ? ? ? xrr((i - 1) * 50, 2) = arr_Field(2)

? ? ? ? End If

? ? ? ? For j = 1 To 3

? ? ? ? ? ? If xrr((i - 1) * 50 + 1, j * 4 - 1) <> "" Then

? ? ? ? ? ? ? ? xrr((i - 1) * 50, j * 4 - 1) = arr_Field(3)

? ? ? ? ? ? ? ? xrr((i - 1) * 50, j * 4) = arr_Field(4)

? ? ? ? ? ? ? ? xrr((i - 1) * 50, j * 4 + 1) = arr_Field(5)

? ? ? ? ? ? End If

? ? ? ? Next j

? ? Next i

? ? d.RemoveAll

? ? For i = 2 To UBound(arr)

? ? ? ? d(arr(i, 8)) = d(arr(i, 8)) + arr(i, 10)

? ? Next i

? ? For i = 2 To UBound(xrr)

? ? ? ? If d.exists(xrr(i, 2)) Then

? ? ? ? ? ? xrr(i, 15) = d(xrr(i, 2))

? ? ? ? ? ? d.Remove xrr(i, 2)

? ? ? ? End If

? ? Next i

? ? [a1].Resize(t * 50, UBound(xrr, 2)) = xrr

? ? For i = 1 To t

? ? ? ? For j = 1 To 3

? ? ? ? ? ? If Cells((i - 1) * 50 + 1, j * 4 - 1) <> "" Then Cells((i - 1) * 50 + 1, j * 4 - 1).CurrentRegion.Borders(xlInsideHorizontal).LineStyle = xlDash

? ? ? ? Next j

? ? Next i

? ? Columns("A:O").HorizontalAlignment = xlCenter? ? ? ? ? '居中

? ? Application.ScreenUpdating = True

End Sub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容