ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 用数组法改写代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-28 19:16 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 天地一相 于 2023-6-29 10:21 编辑

感谢帮助!下面是一段汇总符号条件的数据的代码,嵌套在循环中使用的,请使用数组法改写。能把符合条件的数据先放在数组里,最后一次性写入位置。
  1. str1 = ""
  2. If Cells(1, 1).Value = 25 Then
  3.         For Each x In Range("B1:N1")
  4.              str1 = str1 & x
  5.          Next x
  6. Cells(Rows.Count, "A").End(3).Offset(1) = str1
  7. End If
复制代码


TA的精华主题

TA的得分主题

发表于 2023-6-29 05:48 | 显示全部楼层
arr = Range("B1:N1")
If [a1].Value = 25 Then
For i = 1 To UBound(arr)
  For j = 1 To UBound(arr, 2)
  str1 = str1 & arr(i, j)
  Next
Next
Cells(Rows.Count, "A").End(3).Offset(1) = str1
End If

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-30 12:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 天地一相 于 2023-6-30 12:32 编辑
全党 发表于 2023-6-29 05:48
arr = Range("B1:N1")
If [a1].Value = 25 Then
For i = 1 To UBound(arr)

谢谢,看了多遍,感觉还是需要修改下。问题1:你写的这段代码要放进大循环里去,需要累积全部符合的数据,我没看到n=n+1,之类的句子。猜想还是阶段性反复写入结果的。想法2:不要连接成字符串了,就arr的列数,最终汇总结果直接在正下方第3行开始写入,即左上顶点是B3。再说明:B1:N1的内容是不断变化的,只有当A1=25时,才能去获取这个区域的内容。不知道可否不用循环,直接把A1等于25时,这个区域(就1行)的内容装入数组去,这样符合一次装入一次(行),最后,把全部汇总得数据在B3写入。

TA的精华主题

TA的得分主题

发表于 2023-6-30 14:23 | 显示全部楼层
天地一相 发表于 2023-6-30 12:29
谢谢,看了多遍,感觉还是需要修改下。问题1:你写的这段代码要放进大循环里去,需要累积全部符合的数据 ...

1,这段代码是按照你提供的原代码的效果写的;
2,对数组进行了行列循环达到你代码中 each x 的效果,不用n=n+1;
3,if 【a1】=25  then  arr=range(“”b1:n1“”)
     【b3】.resize(1,ubound(arr,2))=arr

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-30 18:06 | 显示全部楼层
全党 发表于 2023-6-30 14:23
1,这段代码是按照你提供的原代码的效果写的;
2,对数组进行了行列循环达到你代码中 each x 的效果,不 ...

谢谢,你的第3条,这里的arr的内容能不能累加,因为我要放进多循环里去,反复执行你写的语句,我想避免每次执行都写入表格,把每次执行时符合的内容先装进数组,等多循环结束后一次性写入表格。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 19:39 , Processed in 0.040934 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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