ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何依B列内容进行区域内容循环返回?

如何依B列内容进行区域内容循环返回?

作者:绿色风 分类: 时间:2022-08-17 浏览:122
楼主
liuguansky
Q:如何依B列内容,对ACE内容循环返回?
A:用如下代码可以实现:
  1. Sub justtest()
  2. Dim Arr(1 To 5), C As Byte, ArrR(), T&, i&, ArrS(), M&, N&, K&
  3. '定义变量
  4. For C = 1 To 5
  5.     '循环列内容,各列值赋值入数组
  6.     Arr(C) = Cells(1, C).Resize(Cells(1, C).End(4).Row, 1).Value
  7. Next C
  8. T = UBound(Arr(1)) + UBound(Arr(3)) + UBound(Arr(5)) + 2
  9. '每次循环的长度
  10. ReDim ArrS(1 To T) '定义数组,用于返回每次循环的不变值
  11. ReDim ArrR(1 To T * UBound(Arr(2)), 1 To 1) '定义数组,用于返回结果值
  12. For C = 1 To 5 Step 2 '循环定值列
  13.     For i = 1 To UBound(Arr(C))
  14.         M = M + 1
  15.         ArrS(M) = Arr(C)(i, 1) '赋值给循环的数组
  16.     Next i
  17.     M = M + 1 '跳过不变量
  18. Next C
  19. For i = 1 To UBound(Arr(2)) * T Step T '对结果数组,按每个循环段进行循环
  20.     N = N + 1
  21.     For M = 1 To T
  22.         ArrR(i + M - 1, 1) = ArrS(M) ''先赋值不变量
  23.     Next M
  24.     ArrR(i + UBound(Arr(1)), 1) = Arr(2)(N, 1) '再赋值B列变值
  25.     If N <= UBound(Arr(4)) Then ArrR(i + UBound(Arr(1)) + UBound(Arr(3)) + 1, 1) = Arr(4)(N, 1)
  26.     '对D列赋值,如果没有相应匹配,则不赋值
  27. Next i
  28. Range("h:h").ClearContents
  29. Range("h1").Resize(UBound(ArrR, 1), 1) = ArrR
  30. End Sub
2楼
JOYARK1958
謝謝提供學習下載中

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap