首先準備資料:歷史股價(任意門YAHOO FINANCE),EPS:這部分資料各大卷商都有得查。
主題:小編主要是透過RANGE物件的方法AUTOFILTER與MAX、MIN等內建函數功能來完成本益比高低點歷史資料計算。
本益比簡單快入說明,就是股價/EPS=本益比;本益比高點=股價高點計算結果、本益比低點=股價低點計算結果。哈哈好廢話歐😁
來看VBA怎寫:
小編直接用YAHOO FINANCE下載的檔案直接新增一頁工作表1,然後在列1輸入年份,2020~2015;ˋ接著作一個按鈕插入以下CODE內容。
CODE:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
沒有留言:
張貼留言