ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 自动分行太慢(求助大神优化代码)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-8-14 10:58 | 显示全部楼层 |阅读模式
本帖最后由 JOHNJIANG-001 于 2022-8-14 11:35 编辑

自动分行太慢,1万行数据运行代码需要约3-5分钟,急需使用,求助大神,请大神协助优化代码,敬请大神指导,谢谢!



Sheet12.Select
   Dim x&, i&, arr, j%

x = Sheet12.Range("C65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("C" & i).Value, "/")
    For j = 0 To UBound(arr)
        m = m + 1
       Sheet13.Range("C" & m + 3) = arr(j)
       Sheet13.Range("D" & m + 3) = Range("D" & i).Value
       Sheet13.Range("E" & m + 3) = Range("E" & i).Value
       Sheet13.Range("F" & m + 3) = Range("F" & i).Value
    Next j
Next i

x = Sheet12.Range("I65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("I" & i).Value, "/")
    For j = 0 To UBound(arr)
        n = n + 1
       Sheet13.Range("I" & n + 3) = arr(j)
       Sheet13.Range("J" & n + 3) = Range("J" & i).Value
       Sheet13.Range("K" & n + 3) = Range("K" & i).Value
       Sheet13.Range("L" & n + 3) = Range("L" & i).Value
    Next j
Next i

x = Sheet12.Range("O65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("O" & i).Value, "/")
    For j = 0 To UBound(arr)
        O = O + 1
       Sheet13.Range("O" & O + 3) = arr(j)
       Sheet13.Range("P" & O + 3) = Range("P" & i).Value
       Sheet13.Range("Q" & O + 3) = Range("Q" & i).Value
       Sheet13.Range("R" & O + 3) = Range("R" & i).Value
    Next j
Next i

x = Sheet12.Range("U65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("U" & i).Value, "/")
    For j = 0 To UBound(arr)
        P = P + 1
       Sheet13.Range("U" & P + 3) = arr(j)
       Sheet13.Range("V" & P + 3) = Range("V" & i).Value
       Sheet13.Range("W" & P + 3) = Range("W" & i).Value
       Sheet13.Range("X" & P + 3) = Range("X" & i).Value
    Next j
Next i

x = Sheet12.Range("AA65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("AA" & i).Value, "/")
    For j = 0 To UBound(arr)
        Q = Q + 1
       Sheet13.Range("AA" & Q + 3) = arr(j)
       Sheet13.Range("AB" & Q + 3) = Range("AB" & i).Value
       Sheet13.Range("AC" & Q + 3) = Range("AC" & i).Value
       Sheet13.Range("AD" & Q + 3) = Range("AD" & i).Value
    Next j
Next i

x = Sheet12.Range("AG65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("AG" & i).Value, "/")
    For j = 0 To UBound(arr)
        R = R + 1
       Sheet13.Range("AG" & R + 3) = arr(j)
       Sheet13.Range("AH" & R + 3) = Range("AH" & i).Value
       Sheet13.Range("AI" & R + 3) = Range("AI" & i).Value
       Sheet13.Range("AJ" & R + 3) = Range("AJ" & i).Value
    Next j
Next i

x = Sheet12.Range("AM65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("AM" & i).Value, "/")
    For j = 0 To UBound(arr)
        S = S + 1
       Sheet13.Range("AM" & S + 3) = arr(j)
       Sheet13.Range("AN" & S + 3) = Range("AN" & i).Value
       Sheet13.Range("AO" & S + 3) = Range("AO" & i).Value
       Sheet13.Range("AP" & S + 3) = Range("AP" & i).Value
    Next j
Next i

x = Sheet12.Range("AS65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("AS" & i).Value, "/")
    For j = 0 To UBound(arr)
        T = T + 1
       Sheet13.Range("AS" & T + 3) = arr(j)
       Sheet13.Range("AT" & T + 3) = Range("AT" & i).Value
       Sheet13.Range("AU" & T + 3) = Range("AU" & i).Value
       Sheet13.Range("AV" & T + 3) = Range("AV" & i).Value
    Next j
Next i

x = Sheet12.Range("AY65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("AY" & i).Value, "/")
    For j = 0 To UBound(arr)
        U = U + 1
       Sheet13.Range("AY" & U + 3) = arr(j)
       Sheet13.Range("AZ" & U + 3) = Range("AZ" & i).Value
       Sheet13.Range("BA" & U + 3) = Range("BA" & i).Value
       Sheet13.Range("BB" & U + 3) = Range("BB" & i).Value
    Next j

Next i
x = Sheet12.Range("BE65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("BE" & i).Value, "/")
    For j = 0 To UBound(arr)
        V = V + 1
       Sheet13.Range("BE" & V + 3) = arr(j)
       Sheet13.Range("BF" & V + 3) = Range("BF" & i).Value
       Sheet13.Range("BG" & V + 3) = Range("BG" & i).Value
       Sheet13.Range("BH" & V + 3) = Range("BH" & i).Value
    Next j
Next i

x = Sheet12.Range("BK65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("BK" & i).Value, "/")
    For j = 0 To UBound(arr)
        W = W + 1
       Sheet13.Range("BK" & W + 3) = arr(j)
       Sheet13.Range("BL" & W + 3) = Range("BL" & i).Value
       Sheet13.Range("BM" & W + 3) = Range("BM" & i).Value
       Sheet13.Range("BN" & W + 3) = Range("BN" & i).Value
    Next j
Next i





x = Sheet12.Range("BK65536").End(xlUp).Row
For i = 4 To x
    arr = Split(Range("BK" & i).Value, "/")
    For j = 0 To UBound(arr)
        Y = Y + 1
       Sheet13.Range("BQ" & Y + 3) = arr(j)
       Sheet13.Range("BR" & Y + 3) = Range("BR" & i).Value
       Sheet13.Range("BS" & Y + 3) = Range("BS" & i).Value
       Sheet13.Range("BT" & Y + 3) = Range("BT" & i).Value
    Next j
Next i


   Sheet13.Select
   Range("B4").Select

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-8-14 11:15 | 显示全部楼层
呼叫万能的大神指导,谢谢!

TA的精华主题

TA的得分主题

发表于 2022-8-14 17:40 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
写到单元格里面,这个动作尽量一次写进去,用数组写入的方式。
没有表格也很难搞啊。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-8-14 23:47 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
非常感谢您的建议
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 20:41 , Processed in 0.040088 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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