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

2020-12-12 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第十八課
    vba第十八課調用工作表函數在vba中我經常會對工作表的數據進行一些運算,雖然通過代碼進行循環或判斷也可以完成,但是通vba調用函數可以更簡單更直接進行運算提高代碼的運行效率,比如countif、sumif等需要進行判斷統計和求和的運算。
  • excel VBA是什麼?VBA編程入門教程
    VBA是一種面向對象的解釋性語言,通常使用來實現Excel中沒有提供的功能、編寫自定義函數、實現自動化功能等。二、vba編程入門教程1、打開vba編輯器打開vba編輯器有下邊三種方法供大家使用:方法1:點擊excel菜單中的【開發工具】(如果沒有開發工具選項卡,請參考:
  • VBA應用經驗:工作表函數和VBA代碼,你選擇哪種方案?
    在《VBA代碼解決方案》第二冊中我專門的講到這個問題:在第49講中我講到:這講中我給出了了工作表函數,的普遍應用方法代碼,如:Set rng = Range("A1:H10")d = Application.WorksheetFunction.Sum
  • VBA與函數公式的一生一世,若如初見,怎奈何不再見
    在每天的工作過程中,相信Excel裡面很多函數我們都用過,也是非常熟悉的,那在VBA中該怎麼使用函數達到你的目的呢?現在我們有如下的數據,本文將以以下元數據來說明如何使用函數公式。Part-02 使用Excel自帶的函數公式,具體代碼如下所示:其實我們可以直接將Excel自帶的函數公式寫入工作表中間,具體實現代碼的效果如下所示:Part-03 使用VBA代碼來完成這個效果,具體代碼如下所示:Cells(i, 4) = Cells(i, 2) + Cells(i, 3),此句代碼是核心代碼,主要是利用循環和
  • VBA代碼大全010:用vba遍歷文件夾及其子文件夾內的文件
    vba老手都知道,vba寫多了,其實都是在做循環。循環處理多個單元格的內容,循環處理多個工作表的內容,循環處理多個工作簿的內容。
  • Excel VBA常用代碼!
    前兩天有兩位朋友留言想收集一些VBA的常用代碼,今天開始會陸續分享一些!記得收藏好哦,因為今後你應用到稍大型Excel VBA程序時,這其中某些代碼肯定會用到。來看看都是哪些常用代碼:下面先舉一個簡單的例子:場景再現:在當前的工作表中插入一張e盤中名為1.jpg的圖片(長350、高300,距離Excel左側90、上邊框230)操作方法:第一步,打開vba代碼區
  • vba第十六課
    vba第十六課錯誤分支語句1On error resume next 例:sub onerror()Dim a!而加了on error resume next這條語句當出現錯誤時會跳過錯誤執行下一條語句,上圖工作表中有未考的總成績不相加
  • VBA代碼用SetFocus精確控制焦點事件
    今日內容是和大家分享VBA編程中常用的 「積木」過程代碼,這些內容大多是取至我編寫的「VBA代碼解決方案」教程中內容。TextBox1.SetFocusEnd IfEnd Sub代碼解析:輸入按鈕的SET,把文本框數據錄入到工作表A列最後一個單元格中並重新選擇文本框準備下一次輸入。在輸入到工作表前檢查文本框是否為空。
  • VBA代碼大全030:用vba強制關閉word應用程式
    我們有時候需要從word中提取數據到excel中。 這時候一般的套路都是在excel vba中創建word應用程式實例,然後一番操作以後關閉word應用程式。 這樣就會出現當再次運行這個代碼時,出現重新加載word應用程式時卡頓的情況,導致代碼長時間不響應。 這裡介紹一段代碼放在上面的結構的最後,可以強制的關閉任何存在的word.exe進程,從而掃清障礙。
  • 如何利用VBA代碼進行遍歷工作表及添加工作表
    大家好,今日內容仍是和大家分享VBA編程中常用的簡單「積木」過程代碼,第NO.127-NO.130則,內容是:如何引用工作表、遍歷工作表、新建「MY」工作表的方法等內容。(.Count))Sh.Name = "MY"End WithEnd Sub代碼的解析說明:上述過程使用Add方法在工作簿中新建「MY」工作表。
  • Excel VBA 批量匯總多個工作表,您只需要在一瞬間完成
    今天主要和大家介紹的是,我們如何在Excel中使用vba代碼來完成多個工作表的匯總工作。在某些時候,我們經常需要處理如下圖的工作表數據匯總工作,將其他月份的數據統一匯總到同一個工作表中。大多數人都是用手動粘貼複製來完成這個重複性的工作,那麼在你學習了本篇,你就會用更高的效率去完成這個事情了。
  • 「Python替代Excel Vba」系列(終):vba中調用Python
    腳本中導入定義 Python 方法首先定義一個對pandas的DataFrame進行過濾的方法。如下圖:df.query(where_exp) , 這個是主要的方法。最後,定義一個方法,讓vba調用。如下圖:這個方法的上方套上一個 xlwings 的裝飾器 @xw.func。表示這個方法需要註冊到 Vba 模塊中。
  • 使用VBA代碼完成判斷工作表是否存在及刪除工作表的方法
    大家好,今日內容仍是和大家分享VBA編程中常用的簡單「積木」過程代碼,這些內容大多是取至我編寫的「VBA代碼解決方案」教程中內容。NO.174-NO.175內容是:NO. 174:如何利用VBA代碼,判斷是否為空表,如果為空表則使用Delete方法刪除NO. 175:利用VBA的自定義函數,判斷工作表是否存在 VBA過程代碼174:如何利用VBA代碼,判斷是否為空表,如果為空表則使用Delete方法刪除
  • 運用Excel-vba合併工作表數據
    如下圖,工作簿中共有以下幾個工作表,現希望將各張工作表中的數據合併在一起。1.打開vba編輯器:右鍵單擊任意工作表,選擇「查看代碼」。2.輸入代碼:雙擊"ThisWorkbook",在代碼窗口中輸入以下代碼:Sub 合併當前工作簿下的所有工作表()Dim ws As WorksheetDim sh As Worksheet, i%
  • Excel VBA 實例(22) - 一鍵篩選其他工作表或工作簿的數據
    2、編寫vba事件,一旦班級名發生變化,則進行篩選。3、編寫篩選vba代碼。具體步驟1、設計下拉菜單。這個比較簡單,選中要設計下拉菜單的單元格,數據 - 數據驗證,彈出的窗口選擇序列,來源把所有班級都加入(注意:班級直接用逗號隔開,要用英文輸入法下的逗號),如下圖:
  • VBA代碼解決方案第119講:如何遍歷工作表中的所有圖形
    大家好,我們今日繼續講解VBA代碼解決方案的第119講內容:如何遍歷工作表中的圖形。其實這節的內容在我前面的章節中已經講過,今日拿出來,作為一節的專門的內容。我們還是以實際的問題進行分析:一個工作表中有很多的圖形,我們需要把其中的自選圖形部分的文本修正為「VBA代碼解決方案」。如下面截圖所示。以上除了我茶壺,其餘的都是自選圖形,代碼該怎麼寫呢?
  • vba第二十二課
    vba第二十二課工作表的運用實例在workbook對象中,有一個sheets集合,其成員是worksheet對象或chart對象。Vba中,經常在工作表之間轉換或對不同工作表中的單元格區域進行操作,通常有下面幾種方法:例:Sub 工作表1()Msgbox sheets(1).nameMsgbox worksheets(「成績表」).nameEnd sub
  • vba第二十四課
    vba第二十四課工作表拆分工作表拆分是指把工作薄內的單個或多個工作表獨立成一個工作薄,此功能還是比較實用的。例:Sub 工作表拆分()Dim wk As Workbook, a!b = mypath & "\" & Sheets(a).Name獲得工作薄中工作表名和路徑並賦值給「B」Set wk = Workbooks.Add新建一個工作薄Workbooks("24.xlsm").Sheets(a).copy ActiveWorkbook.Sheets(1)複製工作薄名為24
  • VBA工作表事件實現「聚光燈效果」
           VBA工作表事件實現           「聚光燈效果」▶用工作表事件,三句核心代碼就可以實現。將如下代碼放在sheet1的VBE界面下。
  • VBA代碼解決方案第138講:VBA代碼在Word中的操作,如何打開文檔
    大家好,我們今日繼續講解VBA代碼解決方案的第138講內容:在Word中,VBA代碼如何打開一個文檔。在我之前的講解中,我講過,VBA是實現OFFICE實現自動化的一個手段,那麼既然WORD是OFFICE的一個主要的應用工具,他也是可以應用WORD的。