Excel精英培训网

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

[已解决]试改为一个简单宏,下标越界,请帮忙,谢谢!

[复制链接]
发表于 2010-1-2 09:49 | 显示全部楼层 |阅读模式

试改为一个简单宏,下标越界,请帮忙,谢谢!

根据D列内容的关键字,在C列自动给出编号,如D列内容中含关键字"1月"的,就相应地在C列中有数字"11";如D列内容中含关键字"6月"的,就相应地在C列中有数字"23";
Sheet1表正确了,现改一改,却说下标越界,请老师看看,谢谢!
Sub aa()
    Dim arr
    Dim i As Long
    arr = Range("C1:D" & Range("D65536").End(xlUp).Row).Value
    For i = 1 To UBound(arr, 3)
        If arr(i, 4) Like "*1月*" Then
            arr(i, 3) = 11
        ElseIf arr(i, 4) Like "*6月*" Then
            arr(i, 3) = 23
        Else
            arr(i, 3) = ""
        End If
    Next i
    Range("C1").Resize(UBound(arr, 3), 2) = arr
End Sub
HwBTWe4O.rar (7.35 KB, 下载次数: 0)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2010-1-2 10:01 | 显示全部楼层

这是一个两维数组,不存在第三维和第四维
回复

使用道具 举报

发表于 2010-1-2 10:03 | 显示全部楼层    本楼为最佳答案   

Sub aa()
    Dim arr
    Dim i As Long
    arr = Range("c1:d" & Range("d65536").End(xlUp).Row).Value
    For i = 1 To UBound(arr, 1)
        If arr(i, 2) Like "*1月*" Then
            arr(i, 1) = 11
        ElseIf arr(i, 2) Like "*6月*" Then
            arr(i, 1) = 23
        Else
            arr(i, 1) = ""
        End If
    Next i
    Range("c1").Resize(UBound(arr, 1), 2) = arr
End Sub

在第一个的基础上改红色部份就行了,其他不用改

回复

使用道具 举报

 楼主| 发表于 2010-1-2 12:45 | 显示全部楼层

谢谢枯禅大师,谢谢!
回复

使用道具 举报

发表于 2010-6-5 18:51 | 显示全部楼层

学习下

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 12:54 , Processed in 0.305331 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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