Excel VBA 修改整列的数据

有网友求助信息如下:

如图所示,因为文件是其他软件导出的,数据量很大 超过30万。用公式的话 我要插入辅助列 写公式再粘贴回去数值。动不动就卡死。而且文件有好几百个 求大神用VBA解决一下。。

Excel 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

运行的结果如下:

Excel VBA 修改整列的数据

虽然此GIF录制显示时间为1.477秒,但是实际程序如果不打断的话,运行时间仅为

Excel VBA 修改整列的数据

所以结合VBA及数组,可以大大的提高Excel的工作效率


分享到:


相關文章: