VBA代碼解決方案第49講:VBA代碼中工作表函數SUM的利用方法 - VBA...

2021-01-06 VBA語言專家

大家好,我們今日繼續講解VBA代碼解決方案的第49講內容(註:在整理之前的VBA系列文章中合併了一些文章,重新成集排序為第49講,所以從這篇文章開始以新的排序計算):VBA中SUM函數的利用方法。對多個單元格求和,是統計工作中非常普遍的工作,在之前的函數講解過程中,我下了很大的氣力來講解SUM函數及其衍生的函數,在數組的講解中也講了此函數在數組中的利用,可以說SUM函數在統計工作中起著舉足輕重的作用,如果把這個函數利用好了,對自己的工作是非常方便的,今日我在VBA中就此函數的利用及規律再次加以講解。

在對工作表的單元格區域進行求和計算時,使用工作表Sum函數比使用VBA代碼遍歷單元格進行累加求和效率要高得多,我們在熟悉了基本的代碼規則後,就要把重點放在優化程序上,這點非常重要,在一般的簡單運算中或許體會的不是很深,在資料庫的操作中這點非常的明顯。SUM函數就是優化程序的一個方法。

我們看下面的代碼。

Sub MyrngSum()

Dim rng As Range

Dim d As Double

Set rng = Range("A1:H10")

d = Application.WorksheetFunction.Sum(rng)

MsgBox rng.Address(0, 0) & "單元格的和為" & d

End Sub

Sub MyrngSum2()

Dim rng, rngs As Range

Dim d As Double

Set rngs = Range("A1:H10")

For Each rng In rngs

If rng > 0 Then d = d + rng

Next

MsgBox rngs.Address(0, 0) & "單元格的和為" & d

End Sub

代碼解析:

MyrngSum過程調用工作表Sum函數對工作表的單元格區域"A1:H10"進行求和計算。

在VBA中調用工作表函數需要在工作表函數前加上WorksheetFunction屬性。應用於Application對象的WorksheetFunction屬性返回WorksheetFunction對象,作為VBA中調用工作表函數的容器,在實際應用中可省略Application對象識別符。

在實際的應用中,我們不僅要對指定的單元格區域進行簡單的求和,還要利用上判斷的條件,這個時候,如果只是利用WorksheetFunction的sum函數就有些吃力了,我們為此仍舊回到原始的單元格判斷上來,如上面的MyrngSum2的過程。

下面我們實測一下上面的兩個過程:

代碼窗口:

首先運行的是MyrngSum過程:

再次運行的MyrngSum2過程:這次的運行中就去除了負數部分。

所以在具體的應用中不要機械,要實際問題實際分析。

今日內容回向:

1 sum 函數在VBA中是如何應用的?

2 完成條件求和的思路是怎麼樣的?

3 如果要是上述區域有數字呢?該如何進行判斷?

相關焦點

  • VBA代碼解決方案第137講:VBA代碼打開任意程序的方法
    大家好,我們今日繼續講解VBA代碼解決方案的第137講內容:VBA代開任意程序的方法。我們在寫代碼的時候,有時候會必須打開另外一個文件,今日的內容就是解決這個問題,在VBA代碼中如何可以打開其他的程序呢?我講解兩種方法。一Shell函數。該函數讓你可以從VBA過程裡直接打開任意程序。Shell函數是什麼呢?
  • VBA代碼解決方案第58講:在VBA中查找指定工作表的實用方法
    大家好,我們今日繼續講解VBA代碼解決方案的第58講內容:在VBA中查找指定工作表的方法。在上一個例子中,我們通過一個自定義函數解決了刪除工作表的方法。其實實現目的的方法有很多種,不必要必須有某種辦法,但是寫程序的人,比如我,有著很大的惰性,或者說是偏愛某一種方法,比如,我特別喜歡用LEFT和RIGHT來進行左右的截取操作,雖然很多的時候用MID會更簡單些,唉,真的沒辦法。在完成某項目的也是如此,如果不是用自定義函數,只是用遍歷工作表的方法也可以實現的。今天的例子也是如此。
  • excel VBA是什麼?VBA編程入門教程
    VBA是一種面向對象的解釋性語言,通常使用來實現Excel中沒有提供的功能、編寫自定義函數、實現自動化功能等。二、vba編程入門教程1、打開vba編輯器打開vba編輯器有下邊三種方法供大家使用:方法1:點擊excel菜單中的【開發工具】(如果沒有開發工具選項卡,請參考:excel開發工具選項卡在哪?
  • 利用VBA代碼如何打開任意程序
    代碼解析:Mynz過程中使用Shell函數打開記事本,Shell函數是什麼呢?它既不是工作表函數,也不是api函數,它是vba自帶的函數。但是它卻神通廣大,能抵n個api函數,api是應用程式接口,shell就是應用程式和系統之間的橋梁。它的用法很簡單,就是執行一個可執行文件。與開始菜單的運行功能一樣。
  • Vba第四十三課
    Vba第四十三課關於vba操作工作表、數組、字典等所有的基本功能如果大家仔細去學習、認真敲代碼的話,數據分析應該是入門,當然vba作vb的分支語言,在office的平臺上去運行還是大有作為的,更深層次的功能都相當不錯,而前面的課程所講的功能基本可以定義為少量數據的清洗運算功能,要達到數據分析的水平是遠遠不夠的,比如操作資料庫、自定義函數等等都是數據分析的一些必要技巧
  • 利用VBA代碼,輕鬆完成向工作表中添加指定圖片到指定位置
    今日分享的是第NO.215-NO.215,內容是:NO. 215:Insert方法在工作表中插入圖片********************************************************************VBA過程代碼215:Insert方法在工作表中插入圖片Sub MynzinsertPic()Dim i As
  • 使用VBA代碼給動態數組賦值
    :mynz過程將一個C列存儲了學生姓名工作表,有姓「王」的學生存儲在動態數組arr中,然後回填到工作表中。在回填的過程的中利用了工作表的轉置函數Application.WorksheetFunction.Transpose(arr) 是將數組輸入單元格區域。這個單元格區域用的是Resize函數擴展來的,這個函數就是將一個原單元格區域進行擴展,擴展的行數是xcount列數不做擴展。
  • 利用工作表函數取代代碼,進一步優化VBA程序
    大家好,我們今日繼續講解VBA代碼解決方案的第86講內容:VBA代碼的優化篇,使用工作表函數要比代碼計算快很多。在代碼的優化的上一篇中我講到了關閉屏幕更新可以有效的節約程序的運行時間,那麼是不不是必須要關閉屏幕更新以得到更好的運行效率呢?根據我的經驗不是這樣的。
  • Excel VBA常用代碼!
    前兩天有兩位朋友留言想收集一些VBA的常用代碼,今天開始會陸續分享一些!記得收藏好哦,因為今後你應用到稍大型Excel VBA程序時,這其中某些代碼肯定會用到。來看看都是哪些常用代碼:下面先舉一個簡單的例子:場景再現:在當前的工作表中插入一張e盤中名為1.jpg的圖片(長350、高300,距離Excel左側90、上邊框230)操作方法:第一步,打開vba代碼區,輸入通用格式【輸入 sub 統計()回車即可】,並將名稱改為「統計」;第二步,輸入控制語句(ActiveSheet.Shapes.AddPicture
  • Vba第十九課
    Vba第十九課Like 運算符Like用來比較兩個字符串,比較運算裡面就涉及到通配符,下面介紹一下:「?」a" b = "vba" Like "???" c = "我愛vba" Like "*愛*" d = "我愛vba" Like "我*"End Sub
  • 「Python替代Excel Vba」系列(終):vba中調用Python
    所有的修改都無需改動代碼。數據源文件與顯示文件是獨立分開的。本文要點:使用 xlwings 註冊 Python 方法到 Vba 模塊Vba 調用 Python 方法,輸出結果到 Excel注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。
  • Excel VBA 批量匯總多個工作表,您只需要在一瞬間完成
    今天主要和大家介紹的是,我們如何在Excel中使用vba代碼來完成多個工作表的匯總工作。在某些時候,我們經常需要處理如下圖的工作表數據匯總工作,將其他月份的數據統一匯總到同一個工作表中。大多數人都是用手動粘貼複製來完成這個重複性的工作,那麼在你學習了本篇,你就會用更高的效率去完成這個事情了。
  • 你的第一行VBA代碼
    今天帶你寫第一行vba代碼1.新建啟用宏的工作簿:打開excel軟體,將文件保存為啟用宏的工作簿:2. 點擊「文件」-》「選項」,把開發工具選項卡加到頂部選項卡:3.去除個人信息設置:將隱私選項中的保存個人信息勾選框取消勾選。
  • 運用Excel-vba合併工作表數據
    如下圖,工作簿中共有以下幾個工作表,現希望將各張工作表中的數據合併在一起。1.打開vba編輯器:右鍵單擊任意工作表,選擇「查看代碼」。2.輸入代碼:雙擊"ThisWorkbook",在代碼窗口中輸入以下代碼:Sub 合併當前工作簿下的所有工作表()Dim ws As WorksheetDim sh As Worksheet, i%On Error Resume Next '如遇錯誤繼續運行Application.ScreenUpdating = False
  • VBA代碼解決方案第120講:如何實現圖片在工作表中移動、旋轉
    大家好,我們今日繼續講解VBA代碼解決方案的第120講內容:如何實現圖片在工作表中移動、旋轉。在實際的工作中我們還會用到移動、旋轉圖片,今天就給大家講解這方面的知識。其實,移動圖片不難實現,我們只有改變圖片的位置就可以實現,如何讓圖片旋轉呢?這時我們會用到IncrementRotation方法。
  • 使用VBA代碼完成判斷工作表是否存在及刪除工作表的方法
    大家好,今日內容仍是和大家分享VBA編程中常用的簡單「積木」過程代碼,這些內容大多是取至我編寫的「VBA代碼解決方案」教程中內容。NO.174-NO.175內容是:NO. 174:如何利用VBA代碼,判斷是否為空表,如果為空表則使用Delete方法刪除NO. 175:利用VBA的自定義函數,判斷工作表是否存在 VBA過程代碼174:如何利用VBA代碼,判斷是否為空表,如果為空表則使用Delete方法刪除
  • Python和VBA巔峰對決-工作表的合併
    一起學習Python辦公自動化,教你快速學習Python的方法,可以站內私信我。一起加油!!!工作中,很多小夥伴都會遇到一些需求,將一份Excel文檔按照每個部門整理的工作表匯總為一份總的工作表。每個工作表格式都一樣,但是數量很多。傳統的方法就是手工打開文件,拷貝黏貼。費力耗時。
  • VBA代碼解決方案第119講:如何遍歷工作表中的所有圖形
    大家好,我們今日繼續講解VBA代碼解決方案的第119講內容:如何遍歷工作表中的圖形。其實這節的內容在我前面的章節中已經講過,今日拿出來,作為一節的專門的內容。工作表中的多個圖形,有時我們需要根據實際的需要遍歷所有的圖形以達到某種共同的操作,這時需要怎麼做呢?
  • VBA過程代碼之工作表操作
    Date函數是返回系統的日期,time函數是返回系統的時間,中間的chr()函數用的是chr(13)沒有返回值,是換行。 VBA過程代碼12:保護工作表Sub MyNZ()ActiveSheet.ProtectEnd sub代碼的解析說明:上述代碼過程將保護當前的活動工作表。
  • vba第十七課
    用vba代碼進行排版,加上黑色邊框,設置行高為30,垂直居中,水平居中、字體大小為18,寬度自適應Sub with語句()With Sheets(1).Range("a1:f11") .Borders.ColorIndex