打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA入门51:用数组删除行

数据源


        要求:删除香蕉和菠萝的“行”



思路

1、将原始数据写入数组arr。

2、遍历数组arr,提取数组arr中的保留数据,剔除香蕉和菠萝,保留数据放到初始为空白的数组brr中。

3、清空工作表内容,将brr数据输出到工作表,完成删除行。

4、一提到“删除行”,第一印象就会delete的方法去操作“行”(对象)。实际上,在循环当中频繁操作对象(删除行)是十分消耗内存的,代码效率很低。在这个示例中,使用数组并没有使用删除行的操作,而只是仅仅操作数组,消耗内存要比操作对象(删除行)低得太多。


代码


Sub 数组删除行()

    Dim arr, brr(), SR$

    arr = [a1].CurrentRegion '将原始数据写入数组

    SR = '香蕉菠萝'   '删除条件

    '定义数组brr和arr一模一样大小

    ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))

    '//遍历数组arr数据

    For i = 1 To UBound(arr)

        If InStr(SR, arr(i, 2)) = 0 Then  '如果非香蕉菠萝,则提取数据

            K = K 1 '计数

            For j = 1 To UBound(arr, 2) '提取数据写入数组brr

                brr(K, j) = arr(i, j)

            Next

        End If

    Next

    '//输出保留数据

    [a1].CurrentRegion.ClearContents '清空原数据区所有内容

    [a1].Resize(K, UBound(brr, 2)) = brr '写入非香蕉菠萝的数据到工作表

End Sub


代码注释

1、instr函数,判断两个字符串之间是否有包含关系,类似工作表函数find。

如此例instr('香蕉菠萝','菠萝'),由于“菠萝”在“香蕉菠萝”中能够找到,所以返回数字3,也就是“菠萝”在字符串'香蕉菠萝'中的位置。若找不到“菠萝”则返回0。此函数常用来作字符包含关系判断以及重复值判断等。若进一步了解,请百度。


2、利用数组速度快,消耗小的特点,代替常规的删除行操作,是十分给力的做法。


3、如果能使用数组,请优先使用。



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用VBA代码实现多条件筛选
33,多工作表汇总,先赋值给数组
Excel首字拼音模糊搜索及快捷录入
VBA数组声明及赋值后的回填方法
Excel VBA小程序
看完这篇,如果你还不懂VBA字典,那我就没办法了
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服