VBA中Range和Cells的速度

来源:https://www.cnblogs.com/dreamofjay/archive/2020/03/13/12489311.html
-Advertisement-
Play Games

[TOC] 概述 Range和Cells這兩個函數,都可以獲取單元格內容和將內容寫入單元格。既然這兩個功能相同,那麼速度就成為了選擇的關鍵。 註:Range有著比Cells更強大的功能,大家千萬不要把這兩個函數完全等同。當然了,這也從側面反應了速度上必然Range更慢。 測試速度的代碼 測試結果 測 ...


目錄

概述

Range和Cells這兩個函數,都可以獲取單元格內容和將內容寫入單元格。既然這兩個功能相同,那麼速度就成為了選擇的關鍵。

註:Range有著比Cells更強大的功能,大家千萬不要把這兩個函數完全等同。當然了,這也從側面反應了速度上必然Range更慢。

測試速度的代碼

Private Declare Function QueryPerformanceCounter Lib "KERNEL32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "KERNEL32" (lpFrequency As Currency) As Long

Private m_Frequency   As Currency
Private m_Start       As Currency
Private m_Now         As Currency
Private m_Available   As Boolean

Sub test()
Dim i As Long
Dim a As String

m_Available = (QueryPerformanceFrequency(m_Frequency) <> 0)
If Not m_Available Then
 Debug.Print "Performance Counter not available"
End If

For i = 1 To 100000 Step 1
    Cells(i, 1) = CStr(i)
Next i

QueryPerformanceCounter m_Start

For i = 1 To 100000 Step 1
' 下麵四句中選一句執行
a = Range("A" & CStr(i)) 'Range read
a = Cells(i, 1) 'Cells read
Cells(i, 1) = a 'Cells write
Range("A" & CStr(i)) = a 'Range write
Next i

QueryPerformanceCounter m_Now

Elapsed = 1000 * (m_Now - m_Start) / m_Frequency
Debug.Print Elapsed
End Sub

測試結果

測試結果的時間單位是毫秒。

第幾次測試 Range read Cells read Range write Cells write
1 1019.9720 344.1759 6220.0159 5105.3813
2 1020.0355 346.0292 6216.2530 5103.4524
3 1020.8382 345.4371 6207.0230 5079.1922
4 1023.1144 344.1790 6198.1607 5090.5974
5 1018.8067 344.7482 6188.6159 5091.1590
6 1024.7189 344.8035 6181.9272 5085.4331
7 1017.7546 342.1849 6183.4536 5100.7955
8 1023.6095 344.1097 6188.9005 5074.8064
9 1015.5275 344.2437 6186.2355 5076.1584
10 1021.1321 343.7072 6187.4848 5083.3936

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Celery 是一個 基於python開發的分散式非同步消息任務隊列,通過它可以輕鬆的實現任務的非同步處理, 如果你的業務場景中需要用到非同步任務,就可以考慮使用celery, 舉幾個實例場景中可用的例子: 你想對100台機器執行一條批量命令,可能會花很長時間 ,但你不想讓你的程式等著結果返回,而是給你返 ...
  • 為什麼要使用輸出控制符: 我們知道在電腦中數據是以二進位的形式存儲在電腦中的,但是01組成的代碼既可以表示數據也可以表示指令。如果不用輸出控制符變成我們想要的樣子的話,很容易的造成誤解。 如果01組成的代碼表示的是數據的話,那麼同樣的 01 代碼組合不同的輸出格式就會有不同的輸出結果。所以需要使 ...
  • 抽象類 抽象類必須用 abstract 修飾,子類必須實現抽象類中的抽象方法,如果有未實現的,那麼子類也必須用 abstract 修飾。抽象類預設的許可權修飾符為 public,可以定義為 public 或 procted,如果定義為 private,那麼子類則無法繼承。抽象類不能創建對象 抽象類和普 ...
  • 代碼示例全部保存在,歡迎star:https://github.com/EnochZg/golang examples 安裝組件 使用 先創建ini尾碼的配置文件,本文以config.ini為例 在main函數中加入以下代碼讀取username配置 運行後即可讀取到username的值,上文中的Se ...
  • 自從Java發佈以來,基本數據類型就是Java語言的一部分,分別是byte, short, int, long, char, float, double, boolean. 其中: 整型:byte, short, int, long 字元型:char 浮點型:float, double 布爾型:bo ...
  • 分類是在一群已經知道類別標號的樣本中,訓練一種分類器,讓其能夠對某種未知的樣本進行分類,分類演算法屬於一種有監督的學習。分類演算法的分類過程就是建立一種分類模型來描述預定的數據集或概念集,通過分析由屬性描述的資料庫元組來構造模型。分類的目的就是使用分類對新的數據集進行劃分,其主要涉及分類規則的準確性、過 ...
  • 安裝python3(註意代碼規範,不建議用來學習本書,代碼有點差異,報錯)或python2 註:安裝哪一個都可以,但註意安裝完一定要自己去手動添加環境變數,如果安裝二個不同版本環境變數在靠上面的優先被識別,你可以嘗試更換一下順序,用powershell檢測一下,指令:python 如果沒有識別最可能 ...
  • 本人免費整理了Java高級資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高併發分散式等教程,一共30G,需要自己領取。傳送門:https://mp.weixin.qq.com/s/osB-BOl6W-ZLTSttTkqMPQ J ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...