Excel精英培训网

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

[已解决]代码能不能优化?

[复制链接]
发表于 2016-4-12 10:40 | 显示全部楼层 |阅读模式
本帖最后由 dsfada 于 2016-4-13 14:08 编辑

代码能不能优化?
最佳答案
2016-4-12 13:08
或者 x like "*a*"
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-4-12 10:49 | 显示全部楼层
Sub Macro1()
    Dim arr, i&
    i = Range("ac" & Rows.Count).End(xlUp).Row
    arr = Range("ac2:ax" & i)
    For i = 1 To UBound(arr)
        If arr(i, 1) > 1 Then arr(i, 2) = IIf(arr(i, 22) = "a", "s", "t")
        If arr(i, 22) = 2 Then arr(i, 20) = arr(i, 20) & "b": arr(i, 22) = ""
    Next
    Range("ac2").Resize(UBound(arr), 22) = arr
    'Range("ad2").Resize(UBound(arr)) = Application.Index(arr, , 2)
End Sub

因为涉及第2,20,22列改变,所以重新写入arr是对的。
如果只有一列改变,可用注释中的语句index。
回复

使用道具 举报

 楼主| 发表于 2016-4-12 12:26 | 显示全部楼层
本帖最后由 dsfada 于 2016-4-13 14:08 编辑
grf1973 发表于 2016-4-12 10:49
Sub Macro1()
    Dim arr, i&
    i = Range("ac" & Rows.Count).End(xlUp).Row


谢谢!!
回复

使用道具 举报

 楼主| 发表于 2016-4-12 12:31 | 显示全部楼层
本帖最后由 dsfada 于 2016-4-13 14:09 编辑
grf1973 发表于 2016-4-12 10:49
Sub Macro1()
    Dim arr, i&
    i = Range("ac" & Rows.Count).End(xlUp).Row


这句怎么修改?
回复

使用道具 举报

发表于 2016-4-12 13:08 | 显示全部楼层
instr(x,"a")>0 表示x包含a
回复

使用道具 举报

发表于 2016-4-12 13:08 | 显示全部楼层    本楼为最佳答案   
或者 x like "*a*"
回复

使用道具 举报

 楼主| 发表于 2016-4-12 17:26 | 显示全部楼层
grf1973 发表于 2016-4-12 13:08
instr(x,"a")>0 表示x包含a

能不能把这句代码完整写下?
回复

使用道具 举报

 楼主| 发表于 2016-4-12 19:00 | 显示全部楼层
本帖最后由 dsfada 于 2016-4-13 14:09 编辑
grf1973 发表于 2016-4-12 13:08
instr(x,"a")>0 表示x包含a


谢谢!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 02:32 , Processed in 0.341942 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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