有网友求助信息如下:
如图所示,因为文件是其他软件导出的,数据量很大 超过30万。用公式的话 我要插入辅助列 写公式再粘贴回去数值。动不动就卡死。而且文件有好几百个 求大神用VBA解决一下。。
问题描述:
I列
小于等于25的加10
大于等于26.1的减1
那些25到26之间有小数点的那些不处理
问题分析:
1:本例是典型的根据给定的条件。然后进行逻辑运算。推荐采用 if 函数来判断条件。
2:本例求助者仅列出了9956行的数据,但是据问题描述有超过30万的数据,所以推荐使用数组加快程序的运行速度。
写出的代码如下:
Sub 自加()
Dim k, arr
'取i列最后一行的行数
k = Range("i" & Rows.Count).End(xlUp).Row
'把整个i列放入arr数组,除标题行
arr = Range("i2:i" & k)
'省略了标题行,所以k需要减1
For i = 1 To k - 1
'用if函数判断条件,并对数组进行计算
If arr(i, 1) <= 25 Then
arr(i, 1) = arr(i, 1) + 10
ElseIf arr(i, 1) >= 25 Then
arr(i, 1) = arr(i, 1) - 1
Else
arr(i, 1) = arr(i, 1)
End If
Next i
'把计算之后的数组,重新写入列表
Range("i2:i" & k) = arr
End Sub
运行的结果如下:
虽然此GIF录制显示时间为1.477秒,但是实际程序如果不打断的话,运行时间仅为
所以结合VBA及数组,可以大大的提高Excel的工作效率
閱讀更多 浮雲Excel分享 的文章