Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1569|回复: 8

求代码,通过判断连续单元格的和的区间,填充数据

[复制链接]
发表于 2020-3-26 15:23 | 显示全部楼层 |阅读模式
比如基础数据这个工作表,A列是箱号,1号箱到N号箱排序,B列是这个箱子对应的货物金额,每个箱子的金额必须小于50,      号码池这个工作表有一组数据,需要通过判断B列的金额,来从号码池依次取号码填充到C列
      规则是:先判断B2+B3的值,如果不超过50,那么继续往下加一个单元格,判断B2+B3+B4的值,
                  如果还不超过50,那么继续往下加,判断B2+B3+B4+B5的值,依次循环
      假设B2+B3+B4+B5大于50了,那么B2+B3+B4成为一组数据,在对应的C2,C3,C4都填充从号码池取回的第一组号码,也就是号码池A2的值
   C2=A2 ,  C3=A2, C4=A2

接着进入下一个循环,因为B2+B3+B4已经成为一组数据了,那么开始判断B5+B6的值,如果不超过50,则判断B5+B6+B7的值
如果B5+B6+B7大于50, 那么B5+B6 成为第二组数据,C5,C6都填充号码池的第二组数据,C5=A3,C6=A3

依次循环

求助大神指教VBA 代码  谢谢

举例.rar

9.48 KB, 下载次数: 2

发表于 2020-3-26 16:42 | 显示全部楼层
Sub test()
    Dim A, B, i, j, k, s, r
    A = Sheets(1).Range("a1").CurrentRegion
    B = Sheets(2).Range("a1").CurrentRegion
    r = 1

    For i = 2 To UBound(A)
        For j = i To UBound(A)
            s = s + A(j, 2)
            If s > 50 Then Exit For
        Next j
        r = r + 1
        For k = i To j - 1
            A(k, 3) = B(r, 1)
        Next k
        s = 0: i = j - 1
    Next i

    Sheets(1).[a1].Resize(UBound(A), UBound(A, 2)) = A
End Sub


举例2.rar (11.39 KB, 下载次数: 1)
回复

使用道具 举报

 楼主| 发表于 2020-3-26 18:36 | 显示全部楼层
简直太感谢了  ,激动 感谢 再激动~~~
如果我要加多一个判断条件呢?
比如先判断箱号, 先把箱号是1的数据筛选出来,做以上循环,  再做箱号2的数据的循环  这个公式又怎么填呢

举例2.rar

9.45 KB, 下载次数: 2

回复

使用道具 举报

发表于 2020-3-27 10:06 | 显示全部楼层
QQ截图20200327100430.jpg
举例3.rar (13.71 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2020-3-27 10:11 | 显示全部楼层
B列数据怎么产生的?
回复

使用道具 举报

 楼主| 发表于 2020-3-27 13:24 | 显示全部楼层
B列数据属于基础输入  是录入的   ,  太牛了  谢谢你哦
回复

使用道具 举报

 楼主| 发表于 2020-3-27 13:27 | 显示全部楼层
请问这个是啥意思?  s = 0: i = j - 1   出现在代码最后
回复

使用道具 举报

发表于 2020-3-27 14:39 | 显示全部楼层
estherluo198 发表于 2020-3-27 13:27
请问这个是啥意思?  s = 0: i = j - 1   出现在代码最后

当记录了一批小于50的记录之后,计数清零,循环的位置 i  = j - 1

回复

使用道具 举报

 楼主| 发表于 2020-3-27 15:40 | 显示全部楼层
了解  谢谢啦  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 15:54 , Processed in 0.772264 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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