2020年11月18日 星期三

VBA:使用EXCEL內建函數(APPLICATION、WorksheetFunction)

斜率或截距VBA基本迴歸入門中有提到使用EXCEL內建函數,這邊簡單介紹一下EXCEL好用的內建函數,如何在EXCEL VBA中直接使用。

2種方式:

application

Application.WorksheetFunction

舉例1:sum函數,透過以上兩種語法結果都是一樣的。

application.sum(activesheet.range("a1:a10"))

Application.WorksheetFunction.sum(activesheet.range("a1:a10"))

但在VBA編輯時,

Application.WorksheetFunction可以自動帶出下拉式選單方便選擇。


圖1.

舉例2:LINEST最小平方法函數,在儲存格使用這個函數時,僅能透過引數控制,

來選擇要回傳斜率或截距等資料,但透過VBA,可以一次取存斜率或截距等資料,

不過是透過陣列的方式。如圖2.

圖2.




Private Sub CommandButton1_Click()
s1 = ActiveSheet.Range("A2000").End(xlUp).Row
B1 = Application.WorksheetFunction.LinEst(ActiveSheet.Range("c2:" & "c" & s1), ActiveSheet.Range("b2:" & "b" & s1))
If B1(2) > 0 Then
MsgBox "y=" & Format(B1(1), "##.00") & "+" & Format(B1(2), "##.00") & "x"
Else
MsgBox "y=" & Format(B1(1), "##.00") & "-" & Format(B1(2), "##.00") & "x"
End If
MsgBox "第二次"
B1 = Application.LinEst(ActiveSheet.Range("c2:" & "c" & s1), ActiveSheet.Range("b2:" & "b" & s1))
If B1(2) > 0 Then
MsgBox "y=" & Format(B1(1), "##.00") & "+" & Format(B1(2), "##.00") & "x"
Else
MsgBox "y=" & Format(B1(1), "##.00") & "-" & Format(B1(2), "##.00") & "x"
End If
End Sub
view raw LinEst.vba hosted with ❤ by GitHub

沒有留言:

張貼留言

指數變化(2025.03.28)

 指數變化(2025.03.28) 上周焦點: 美國消費者信心指數 3/25 92.9 美國耐久財訂單月增率 3/26 1.4 PCE 月增 0.4 年增 2.8 (不多阿,最高還有5.5ㄝ)   本周愛看: 美國非農業就業人數變化 美國ISM製造業採購經理人指數 美國芝加哥FE...