ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 62|回复: 2

【求助】取过来的行数是一样的,实际应该是不一样

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-12-9 22:32 | 显示全部楼层 |阅读模式
I列内容+“C生产退料” 与出入库表的I列内容+B列=“C生产退料”时  出入库表的C到H内容复制到 退料单 表

I列内容+“D生产领料” 与出入库表的I列内容+B列=“D生产领料”时  出入库表的C到H内容复制到 出库单 表
我的目的是循环待处理表的I列 打印退料单和出库单,打印后再循环待处理表I列下一行
我自己写的存在2个问题
1、出库单匹配过来的行数与退料单一样(正确应该是出库单比退料单要多几行)
2、如果待处理有多行的时候,匹配过来的内容全部连在一起了
比如待处理有2行,每行匹配到的内容是20行,结果就20+20了,我要的是20行打印后清空再输入20行在打印

Sub 出库退库()
    Dim arr, drr, i, y, c, n, x
    With Sheets("待处理")
        drr = .Range("h2:I" & .Range("i" & Rows.Count).End(xlUp).Row)
    End With
   m = Sheets("出入库记录").Cells(Rows.Count, 1).End(3).Row
   arr = Sheets("出入库记录").Range("a1:i" & m)
    With Sheets("出入库记录")
       Trr = .Range("a1:i" & .Range("A" & Rows.Count).End(xlUp).Row)
    End With
ReDim brr(1 To UBound(Trr), 1 To 8), crr(1 To UBound(arr), 1 To 8)
For y = 1 To UBound(drr)
For i = 2 To UBound(arr)
    If arr(i, 2) & arr(i, 9) = "D生产领料" & drr(y, 2) Then
    Z = arr(i, 1)
        c = c + 1
        crr(c, 1) = arr(i, 3)
        crr(c, 2) = arr(i, 4)
        crr(c, 3) = arr(i, 5)
        crr(c, 4) = arr(i, 6)
        crr(c, 5) = arr(i, 7)
        crr(c, 6) = arr(i, 8)
    End If
Next
For T = 2 To UBound(Trr)
    If Trr(T, 2) & Trr(T, 9) = "C生产退料" & drr(y, 2) Then
    x = Trr(T, 1)
        n = n + 1
        brr(n, 1) = Trr(T, 3)
        brr(n, 2) = Trr(T, 4)
        brr(n, 3) = Trr(T, 5)
        brr(n, 4) = Trr(T, 6)
        brr(n, 5) = Trr(T, 7)
        brr(n, 6) = Trr(T, 8)
    End If
Next
With Sheets("退料单")
   .Range("B7:I35").ClearContents
   .Cells(7, "b").Resize(n, 8) = brr
   .Cells(5, "H") = x
   '.[B6].Resize(n + 1, UBound(brr, 2)).Borders.LineStyle = 1
   '.PrintOut
End With
With Sheets("出库单")
   .Range("B9:I53").ClearContents
   .Cells(9, "b").Resize(n, 8) = crr
   .Cells(7, "H") = Z
   '.[B6].Resize(n + 1, UBound(brr, 2)).Borders.LineStyle = 1
'.PrintOut
End With
Next y
  'MsgBox "OK!"
End Sub


工作簿1.zip

65.57 KB, 下载次数: 0

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-10 20:02 | 显示全部楼层
Sub 批量打印出库单和退料单()     Dim arr, i, j     With Sheets("待处理")         arr = .Range("A2:O" & .Range("I" & Rows.Count).End(xlUp).Row)     End With     With Sheets("待处理")         For i = 1 To UBound(arr)                 .Cells(2, "K") = arr(i, 9)             Call 出库退库         Next i     End With End Sub Sub 出库退库()     Dim arr, drr, i, y, c, n, x     With Sheets("待处理")         drr = .Range("G2:O" & .Range("K" & Rows.Count).End(xlUp).Row)     End With    m = Sheets("出入库记录").Cells(Rows.Count, 1).End(3).Row    arr = Sheets("出入库记录").Range("a1:i" & m)     With Sheets("出入库记录")        Trr = .Range("a1:i" & .Range("A" & Rows.Count).End(xlUp).Row)     End With ReDim brr(1 To UBound(Trr), 1 To 8), crr(1 To UBound(arr), 1 To 8) For y = 1 To UBound(drr)  For i = 2 To UBound(arr)     If arr(i, 2) & arr(i, 9) = "D生产领料" & drr(y, 5) Then     Z = arr(i, 1)         c = c + 1         crr(c, 1) = arr(i, 3)         crr(c, 2) = arr(i, 4)         crr(c, 3) = arr(i, 5)         crr(c, 4) = arr(i, 6)         crr(c, 5) = arr(i, 7)         crr(c, 6) = arr(i, 8)     End If Next For T = 2 To UBound(Trr)     If Trr(T, 2) & Trr(T, 9) = "C生产退料" & drr(y, 5) Then     x = Trr(T, 1)         n = n + 1         brr(n, 1) = Trr(T, 3)         brr(n, 2) = Trr(T, 4)         brr(n, 3) = Trr(T, 5)         brr(n, 4) = Trr(T, 6)         brr(n, 5) = Trr(T, 7)         brr(n, 6) = Trr(T, 8)     End If Next With Sheets("退料单")    .Range("B7:I35").ClearContents    .Cells(7, "b").Resize(n, 8) = brr    .Cells(5, "H") = x    '.[B6].Resize(n + 1, UBound(brr, 2)).Borders.LineStyle = 1    .PrintOut End With With Sheets("出库单")    .Range("B9:I53").ClearContents    .Cells(9, "b").Resize(c, 8) = crr    .Cells(7, "H") = Z    '.[B6].Resize(n + 1, UBound(brr, 2)).Borders.LineStyle = 1   '.PrintOut End With Next y   'MsgBox "OK!" End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-10 20:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 批量打印出库单和退料单()
    Dim arr, i, j
    With Sheets("待处理")
        arr = .Range("A2:O" & .Range("I" & Rows.Count).End(xlUp).Row)
    End With
    With Sheets("待处理")
        For i = 1 To UBound(arr)
                .Cells(2, "K") = arr(i, 9)
            Call 出库退库
        Next i
    End With
End Sub
Sub 出库退库()
    Dim arr, drr, i, y, c, n, x
    With Sheets("待处理")
        drr = .Range("G2:O" & .Range("K" & Rows.Count).End(xlUp).Row)
    End With
   m = Sheets("出入库记录").Cells(Rows.Count, 1).End(3).Row
   arr = Sheets("出入库记录").Range("a1:i" & m)
    With Sheets("出入库记录")
       Trr = .Range("a1:i" & .Range("A" & Rows.Count).End(xlUp).Row)
    End With
ReDim brr(1 To UBound(Trr), 1 To 8), crr(1 To UBound(arr), 1 To 8)
For y = 1 To UBound(drr)
For i = 2 To UBound(arr)
    If arr(i, 2) & arr(i, 9) = "D生产领料" & drr(y, 5) Then
    Z = arr(i, 1)
        c = c + 1
        crr(c, 1) = arr(i, 3)
        crr(c, 2) = arr(i, 4)
        crr(c, 3) = arr(i, 5)
        crr(c, 4) = arr(i, 6)
        crr(c, 5) = arr(i, 7)
        crr(c, 6) = arr(i, 8)
    End If
Next
For T = 2 To UBound(Trr)
    If Trr(T, 2) & Trr(T, 9) = "C生产退料" & drr(y, 5) Then
    x = Trr(T, 1)
        n = n + 1
        brr(n, 1) = Trr(T, 3)
        brr(n, 2) = Trr(T, 4)
        brr(n, 3) = Trr(T, 5)
        brr(n, 4) = Trr(T, 6)
        brr(n, 5) = Trr(T, 7)
        brr(n, 6) = Trr(T, 8)
    End If
Next
With Sheets("退料单")
   .Range("B7:I35").ClearContents
   .Cells(7, "b").Resize(n, 8) = brr
   .Cells(5, "H") = x
   '.[B6].Resize(n + 1, UBound(brr, 2)).Borders.LineStyle = 1
   .PrintOut
End With
With Sheets("出库单")
   .Range("B9:I53").ClearContents
   .Cells(9, "b").Resize(c, 8) = crr
   .Cells(7, "H") = Z
   '.[B6].Resize(n + 1, UBound(brr, 2)).Borders.LineStyle = 1
  '.PrintOut
End With
Next y
  'MsgBox "OK!"
End Sub
用笨方法处理好了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 21:33 , Processed in 0.026698 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表