数据源
要求:删除香蕉和菠萝的“行”
思路
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、如果能使用数组,请优先使用。
联系客服