跳到主要內容

Excel VBA (一) : 自訂函數之自動加總

最近幫忙別人解決 Excel 的資料處理問題, 順便將一些使用心得做一下筆記

當我開啟Excel時, 預設是沒有開發人員的功能(如下圖的紅框)

要開啟就要點擊Excel選單的檔案(如上圖的黃框)
再點擊選項(如下圖的紅框)

再點擊自訂功能區(如下圖的紅框)

再將開發人員的功能打開即可(如下圖的紅框)

開啟開發人員中的Visual Basic(如下圖的紅框)就會開啟VBA的功能視窗了

我先嘗試最簡單的程式, 看看是否成功(如下圖)

Function 我的加總() As Double
    我的加總 = 100
End Function
再去Excel的工作表1中, 在任一儲存格中輸入"=我的加總()", 測試是否會顯示 "100"(如下圖), 結果成功了, 代表Excel VBA中函數與變數名稱都是可以用中文

再來就是真正開始寫程式了, 如果真正要寫的完整會要寫很多例外處理, 這邊只做簡單的版本, 請大家見諒喔!以下是我完成的程式碼

Function 我的加總(加總區域 As Range) As Double
    Dim data As Variant
    我的加總 = 0
    For Each data In 加總區域
        我的加總 = 我的加總 + data
    Next
End Function
在Excel中輸入如下圖的資料來測試

繼續在B8儲存格中點選 "插入函數fx" (如下圖)

出現Excel的函數視窗後, 函數類別選擇 "使用者定義" 會出現 "我的加總" 函數, 按下確定後選擇A1..A5的加總區域, 結果顯示15, 代表程式初步測試OK!

再來我將 B5 故意留空白, 也讓它加總看看, 手動將B8的 "A1:A5" 改成 "A1:B5" 結果顯示29(成功)!

再來是C1我故意輸入文字 "A", 讓它加總看看, 手動將B8的 "A1:B5" 改成 "A1:C5", 結果顯示 "#VALUE!", 如果要改成非數字的都自動濾掉不加, 就要再修改程式囉!

最後要感謝這篇文章教了如何在 Google Blogger 中將程式碼區塊改變顏色



測試時間: 2020年07月28日
測試環境: Windows 10 家用版, Excel 2019 家用版

留言

這個網誌中的熱門文章

Excel C# (一) : 增益集 (Add-Ins) 之自訂函數

Excel的自訂函數除了之前介紹的VBA方式外, 還可以用 JavaScript, C# 等, 我就來試試看用C#來開發 我爬文找到了這篇 Excel-DNA 裡有詳細的教學, 不過我還是自己照做一遍看看是否成功 ! 第一步先開啟 Visual Studio 2019, 專案選擇 "類別庫(.NET Framework)" 過來將專案名稱輸入 MyExcelAddIns, 其他不變按下 "建立" 第二步接著在 "工具"->"NuGet 套件管理員"->"管理方案的 NuGet 套件", 將 Excel-DNA 套件加入至專案中 第三步將專案中的 Class1.cs 檔案刪除, 自己新增一個類別 "MyFunctions", 然後我複製 https://excel-dna.net 該網站上的範例, 貼進來方便測試 第四步我則是將方案組態由 "Debug" 改成 "Release"(如上圖的紅框), 再按 "建置" 下的 "重建方案" 產生 Excel XLL 檔案, 再去方案總管的 MyExcelAddIns 上按右鍵, 選擇 "在檔案總管中開啟資料夾" 會看到下面第二張圖 過來我的習慣是將這個 Release 目錄整個複製, 貼到桌面方便測試 ! 第五步則是開啟空白的Excel, 按 "程式開發人員" 下的 "Excel增益集", 點擊瀏覽後, 選擇桌面上我剛剛的 Release 資料夾, 如果Excel是32位元則選 MyExcelAddIns-AddIn.xll 檔案, 如果是64位元版本則選擇 MyExcelAddIns-AddIn64.xll 檔案, 接著在 Excel 任一儲存格輸入 =SayHello("World!"), 結果出現 Hello World!, 表示一切都正確, 接著我可以開始建立自己的函數了! 最後我個人認為自訂函數的VBA與C#兩種方式, 其優缺點如下:VBA的優點...

在 Windows 10 的 IIS 安裝 SSL for Free

為了讓我的 Windows 10 IIS 網站在全世界都能合法認證, 方便開發測試用, 我爬網了一下, 決定嘗試申請一個台灣人都能免費申請的 *.nctu.me 網域, 以及 SSL for Free 的免費 SSL 來測試第一步當然是將 Windows 10 的 IIS 安裝好, 起碼要在瀏覽器中輸入網址 localhost 看到本機網站的首頁, 才能知道 SSL 是否設定成功 第二步則是申請一個網域, 我是去台灣交通大學的 https://nctu.me 去申請的, 只要有台灣身分證的都能申請, 網站上也有詳細的註冊說明, 如下圖: 第三步則是申請一個公證機構的 SSL 認證, 我則是去 https://www.sslforfree.com 申請一個免費的 SSL 來測試用, 申請的步驟以及IIS設定, 我則主要是參考以下幾位的做法 https://ithelp.ithome.com.tw/articles/10222231 https://it-help.tips/iis-setup-ssl-certificate/ https://benit.pixnet.net/blog/post/61838887 最終我的步驟如下: (1) 先決定好要申請 SSL 的網址是甚麼, 假如我申請的交大網域名稱是 myname.nctu.me, 則我要申請的 SSL 網址可以是 https://www.myname.nctu.me 或是 https://myssl.myname.nctu.me 或是其他我喜歡的名字, 你可能會問如果我有很多個不是就要一個一個申請, 不能是 https://*.myname.nctu.me 嗎? 因為我申請的是免費的才會有這限制, 要錢的就不用這麼麻煩了! (2) 開啟 Windows 10 的電腦管理, 點擊IIS的伺服器憑證, 畫面如下 : (3) 點擊建立憑證要求, 畫面如下: (4) 輸入資料, 其中的一般名稱就是輸入之前我要SSL的網址, 其他我則隨便填, 畫面如下: (5) 過來加密長度選 2048, 如下圖: (6) 再來就是輸入憑證要求的檔案名稱, 我們可以將它儲存在 d:\myssl.txt 的檔案中(這檔案的內容是申請 SSL for Free 要用的), 如下圖 :...

Asp.Net Core Debug Source Code

寫過Asp.Net Core Web MVC應該知道裡面要使用很多的Middleware,如果要知道裡面的運作方式,就要看Source Code,或者想知道自己寫的程式哪裡出問題,有時候就必須Debug進Source Code中看變數的變化 如何Debug Source Code我是參考 DEBUGGING ASP.NET CORE 2.0 SOURCE CODE 這篇文章來設定的,作法如下: 1.點選[工具]的[選項]  2.展開[偵錯]的[一般],並將[啟用Just My Code]的選取方塊 取消 ,以及[啟用來源連接支援]的選取方塊 點選起來   3.接著點選[偵錯]的[符號],並將[Microsoft伺服器]的選取方塊 點選起來  (點選之後會出現提示視窗,因為載入這些符號,會導致一些效能上的影響,尤其是首次載入,讓我以為Visual Studio當機了...) 這樣就可以Debug Source Code了,接著開始測試看看 : 1.先開啟一個新的專案(我選擇Asp.Net Core Web 應用程式) 2.因為只是測試所以都用預設的, 一直按確定就好, 除了Asp.Net Core 3.1改成5.0(操作方式都一樣沒差, 我只選5.0只是為了節省下載符號的時間以及空間而已,如果我選3.1它會下載這個版本的符號一次, 下次我選5.0它又會下載這個版本的符號一次) 3.專案自動建好後, 於視窗右邊的 HomeController.cs 按兩下, 視窗左邊就會看到檔案的內容, 接著找到 Index 的 rertrn View(), 在這列的前面點一下即可設定中斷點, 就像下圖的左邊紅色圈圈一樣(因為要顧到初學者所以才會說的這麼仔細) 4.設定好中斷點(紅色圈圈)之後, 過來就按下 [ IIS Express ] 的執行(上圖中中間上面的黃色圈起來的地方), 或者按下 F5, 就會開始執行程式 5.如果是第一次執行, 可能會出現一個確認視窗, 要你確認是否IIS Express的SSL憑證?按下是即可, 下面一個視窗也請按是 6.接著畫面會停止不動像當機一樣, 不是當機只是第一次抓符號要很久, 只要耐心等候直到 return View() 由紅底變成黃底就跑完了, 黃色底的列代表程式目前執行到這,...