美文网首页
仓库打印排版

仓库打印排版

作者: shengjiaimi | 来源:发表于2018-08-14 14:34 被阅读0次

'需求

'每页打印50输出50行(1行标题+49行数据)

'小类和SKU放在A/B列

'标题放在每页第一行

'店号/数量/余量放在C/D/E列,当放不下时空列再放置(G/H/I K/L/M)还不够放时就换页

'统计每个SKU出现的次数

'对数据行用下划线标识

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("明细").[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      '对每个SKU计数

    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                        '当正好充满列数时

            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                            '每页数据量

            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                            '每页数据行数

            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","店号","数量","余量"}]

    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

相关文章

  • 仓库打印排版

    '需求 '每页打印50输出50行(1行标题+49行数据) '小类和SKU放在A/B列 '标题放在每页第一行 '店号...

  • Swift 蓝牙打印机数据排版

    蓝牙打印机打印排版本次使用的是 Swift 5构建,蓝牙连接打印机打印 [TOC] 功能包含: 两列排版 两列左右...

  • 解决便携式打印机打印模糊的办法

    问题一、有些字打印不出来原因:打印头脏,排版有误。 方法:清洗打印头,排版的时候看是否把打印的字重叠在一起了,重新...

  • app连接蓝牙打印机实现打印

    app连接蓝牙打印机实现打印并排版_鬼妖妖的博客-CSDN博客_app蓝牙打印

  • 最后的——“尾声”(一)

    最后的——“尾声”(一发,打印排版。并正版没核实,先网发,为什么,下面有说明) (打印排版,A4文档,页边距2.5...

  • C# 图片打印杂谈

    打印:PrintDocument 环境:WPFand Winform 要求:排版并打印图片 之前一直不明白很多参数...

  • Qt数据库应用18-横向纵向排版

    一、前言 近期用户提了个需求,需要打印一个文档,要求其中部分页横向排版部分页面纵向排版,这个在之前的通用打印导出p...

  • iOS 蓝牙打印总结

    在开发SaaS的过程中,小票打印的功能主要是通过App来跟打印机进行连接,并使用打印机指令对订单信息进行排版和打印...

  • 仓储物流项目总结

    打印sku 对外接口 入库单收货 库存 仓库,分区,库位,库位类型 角色,部门,菜单,仓库权限

  • Java生产消费问题

    生产者 消费者 仓库类 测试代码 打印结果

网友评论

      本文标题:仓库打印排版

      本文链接:https://www.haomeiwen.com/subject/iuqvbftx.html