有網友求助信息如下:
如圖所示,因為文件是其他軟件導出的,數據量很大 超過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分享 的文章