2021年7月23日 星期五

VBA:歷史資料計算本益比

首先準備資料:歷史股價(任意門YAHOO FINANCE),EPS:這部分資料各大卷商都有得查。

主題:小編主要是透過RANGE物件的方法AUTOFILTER與MAX、MIN等內建函數功能來完成本益比高低點歷史資料計算。

本益比簡單快入說明,就是股價/EPS=本益比;本益比高點=股價高點計算結果、本益比低點=股價低點計算結果。哈哈好廢話歐😁

來看VBA怎寫:

小編直接用YAHOO FINANCE下載的檔案直接新增一頁工作表1,然後在列1輸入年份,2020~2015;ˋ接著作一個按鈕插入以下CODE內容。

CODE:



Private Sub CommandButton1_Click()
list_data = Sheets("工作表1").Range("B1:G1")
J = 1
Do While list_data(1, J) <> ""
Source = Excel.ActiveWorkbook.Name
Sheets("1101.TW").Activate
XX1 = Sheets("1101.TW").Range("A65536").End(xlUp).Row
Sheets("1101.TW").Range("$A$1:$f$" & XX1).AutoFilter Field:=1, Criteria1:= _
">=" & list_data(1, J) & "/1/1", Operator:=xlAnd, Criteria2:="<=" & list_data(1, J) & "/12/31"
Set temp = Sheets("1101.TW").Range("B:E").SpecialCells(xlCellTypeVisible)
Sheets("工作表1").Cells(3, J + 1).Value = Format(Application.Max(temp), "##.00")
Sheets("工作表1").Cells(4, J + 1).Value = Format(Application.Min(temp), "##.00")
Sheets("工作表1").Cells(5, J + 1).Value = Format(Sheets("工作表1").Cells(3, J + 1) / Sheets("工作表1").Cells(2, J + 1), ".00")
Sheets("工作表1").Cells(6, J + 1).Value = Format(Sheets("工作表1").Cells(4, J + 1) / Sheets("工作表1").Cells(2, J + 1), ".00")
Sheets("1101.TW").AutoFilterMode = False
'Sheets("1101.TW").Activate
Sheets("工作表1").Activate
If J = UBound(list_data) Then
Exit Do
End If
Windows(Source).Activate
J = J + 1
Loop
End Sub
view raw gistfile1.txt hosted with ❤ by GitHub

結果:
圖1.
P.S框線是手動加的

想想怎樣自動做完1600多家公司哩!!!!😅😅😅
小編目標每天自動算完作本益比分析投資用~~~吃飽太閒。




沒有留言:

張貼留言

指數變化(2025.03.28)

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