ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 复制行并修改内容如何让代码运行更快?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-15 16:48 | 显示全部楼层 |阅读模式
本帖最后由 ajgdm122 于 2024-4-15 18:06 编辑

1.png


表格里司机这2列,有双人或三人的,需要拆分;

2.png
拆分后对应的数据除以2或者3,2人的除2,3人的除3

3.png
效果图

问题:里面我写了代码,用可以用,但非常慢,我是先录了一段宏之后修改的,请教各位有无更好的代码可以赐教?因为数据有时很多,我自己写的运行太慢了。

3月汇总工地明细表.zip

114.41 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2024-4-15 17:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-4-15 18:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-4-15 18:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-4-15 18:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
被取数表格有些不规范,取数比较难。。。

TA的精华主题

TA的得分主题

发表于 2024-4-15 19:32 | 显示全部楼层
附件供参考,代码关键地方有标注。

3月汇总工地明细表.7z

124.7 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2024-4-15 19:32 | 显示全部楼层
参与一下。。。

  1. Sub 拆分多勾机手2()  '//2024.4.15
  2.     With Sheets("汇总表")
  3.         r = .Range("a1").End(xlDown).Row '取R列
  4.         arr = .[a1].Resize(r, 24)
  5.         zrr = .[a1].Resize(r, 24)
  6.         ReDim brr(1 To 10000, 1 To UBound(arr, 2))
  7.         On Error Resume Next
  8.         For i = 2 To 23   'UBound(arr)   '//确认无误后,23改为UBound(arr)即可.
  9.             If arr(i, 1) <> Empty Then
  10.                 For j = 17 To 18
  11.                     If InStr(arr(i, j), "、") Then
  12.                         m = m + 1
  13.                         For k = 1 To 16
  14.                             brr(m, k) = arr(i, k)
  15.                         Next
  16.                         c1 = 22
  17.                         brr(m, 21) = arr(i, 21): brr(m, c1) = arr(i, c1)
  18.                         p = arr(i, c1)   '//孔深
  19.                         n = UBound(b) + 1  '//人数
  20.                         p1 = Round(p / n, 2)  '//孔深拆分
  21.                         b = Split(arr(i, j), "、")
  22.                         For x = 0 To UBound(b)
  23.                             m = m + 1
  24.                             For k = 1 To 16
  25.                                 brr(m, k) = arr(i, k)
  26.                             Next
  27.                             brr(m, j) = b(x)
  28.                             brr(m, j + 6) = p1
  29.                         Next
  30.                     End If
  31.                 Next
  32.             End If
  33.         Next
  34.         .[a26].Resize(m, 24) = brr   '//数据暂写在26行开始的地方,确认无误后,.[a26]改为.[a2]即可.
  35.         .[a1].Select
  36.     End With
  37.     MsgBox "拆分勾机手完成!"
  38. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-26 11:09 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-20 21:33 , Processed in 0.045240 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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