[VBA] 自動爬取並排序上市櫃 產業類股 指數

爬取「 產業類股 」的目的

※ 在台灣股市中,上市櫃 產業類股 的多樣性是市場動態的重要元素之一。這些不同的類股代表著各種產業和公司,影響著股市的整體表現。
( PS. 在投資五大面向之「 產業面 」的類股觀察 一文中,對於整體產業操作,已有相關的介紹。)

◎ 本文則運用 VBA程式,來獲取上市櫃產業類股數據,以了解各產業的表現 / 成長趨勢 / 市佔率等訊息,這有助於制定投資策略或進行市場研究。

上市櫃 產業類股 概述

※ 台灣的上市櫃市場包含多個產業,每個產業都有其獨特的特點和貢獻。以下是對上市櫃產業類股的一般概述:

[ 1 ] 科技類股 : 具有高度創新性和競爭力,在台灣的上市櫃市場中佔有重要地位。包括 : 半導體製造商 / 資訊科技公司 / 電子製造商等。
→ 挑戰 : 受全球經濟波動和供應鏈問題的影響,需警惕市場變化。
[ 2 ] 金融類股 : 在支持台灣經濟的運作和發展方面,發揮了重要作用。包括 : 銀行 / 證券公司 / 保險公司等。
→ 挑戰 : 利率變動 / 金融市場波動和監管環境的變化,可能影響其獲利。
[ 3 ] 製造業類股 : 對於提供就業機會和推動產業發展,有著重要貢獻。包括 : 汽車製造 / 化學製造 / 電機製造等。
→ 挑戰 : 受國際貿易環境變動和全球供應鏈調整的影響,需應對全球經濟變化。
[ 4 ] 生技醫療類股 : 在近年來取得了顯著的發展,反映出生物醫藥領域的成長。包括 : 生物科技公司 / 醫藥公司等。
→ 挑戰 : 需要應對複雜的研發過程 / 監管要求和市場競爭。
[ 5 ] 消費類股 : 直接服務於消費者,受到消費者行為和市場需求的直接影響。包括 : 食品飲料 / 零售業等。
→ 挑戰 : 消費者行為變化 / 市場競爭激烈。
[ 6 ] 能源類股 : 在能源供應方面發揮了關鍵作用。包括 : 能源開採 / 供應和相關服務公司。
→ 挑戰 : 面臨能源轉型 / 氣候變化和國際油價波動等挑戰。
[ 7 ] 建設類股 : 參與台灣的基礎建設和房地產市場。包括 : 房地產開發 / 建築公司等。
→ 挑戰 : 受市場景氣 / 政府法規,以及勞動力需求的影響。
[ 8 ] 運輸類股 : 對於保障商品和服務的流通至關重要。包括航空公司 / 船運公司 / 物流公司等。
→ 挑戰 : 受油價波動 / 經濟衰退,以及同業競爭的影響。
[ 9 ] 服務業類股 : 主要提供服務而非實體商品。包括 : 各種服務行業,如餐飲 / 旅遊 / 教育等。
→ 挑戰 : 消費者需求變化 / 市場競爭激烈。

( PS. 上述產業只是上市櫃市場中部份產業的簡要介紹,以下列出所有上市櫃產業類股的產業代號及名稱。)

[ 上市櫃產業類別之代號及名稱 ] :
產業類股

各產業間的連動性

※ 各產業間的連動性 是指不同產業在市場環境中的相互影響和關聯性。體現在股市中,就是某一個產業的表現可能會影響到其他產業的股價走勢。

◎ 常見的產業連動情況 :
[ 1 ] : 經濟環境影響 : 不同產業的表現通常與整體經濟環境密切相關。例如 : 當經濟增長時,製造業 / 科技類股和消費類股,受惠於需求增加,而金融類股可能因為信貸需求上升而受益。
[ 2 ] : 全球市場變化 : 國際貿易和全球市場波動會影響到不同產業的股價。例如 : 科技類股對於全球經濟和科技發展敏感,而能源類股會遭受全球能源價格波動的影響。
[ 3 ] : 產業供應鏈 : 許多公司會跨足不同產業,形成供應鏈。當一個產業受到影響時,與其相關供應鏈中的公司,也可能受到牽連。例如 : 半導體行業的變動,可能影響到電子製造業。
[ 4 ] : 相似市場定位 : 具有相似市場定位的公司,可能會受到相似的市場因素影響。例如 : 具有相似目標客戶的零售業和消費類股,在特定時期可能會有相似的股價表現。
[ 5 ] : 宏觀經濟政策 : 政府的宏觀經濟政策,如 : 利率調整 / 貨幣政策和稅收政策,可能會對不同產業造成影響。例如 : 金融類股通常對利率變動敏感,而製造業可能會受到關稅政策的影響。
[ 6 ] : 市場情緒 : 投資者情緒和市場信心,可能影響到不同產業的表現。當市場悲觀時,投資者可能更傾向於避險,導致一些防禦性行業( 如 : 公用事業類股 )的強勢表現。

( PS. 了解各產業類股之特點與其產業間連動的關係,便可以開始製作 爬取上市櫃產業類股數據 的VBA程式。)

VBA實作 / 每日自動爬取上市櫃 產業類股 數據

※ 製作 自動爬取上市櫃產業類股數據 的VBA程式,其操作步驟 :
[ 1 ] : 取得上市櫃產業類股之數據網址
[ 2 ] : 下載上市產業類股指數 to EXCEL
[ 3 ] : 下載上櫃產業類股指數 to EXCEL
[ 4 ] : 整合上市櫃產業類股當日指數
[ 5 ] : 繪製上市櫃產業類股指數圖表

取得上市櫃 產業類股 之數據網址

※ 要爬取上市櫃產業類股之數據,首先要了解 上市/上櫃產業類股指數 的數據存放位置(網址)。
[ 上市 ] : 數據網址 — https://taiwanindex.com.tw/indexes/board/twse
[ 上市公司 / 產業類股 網頁示意圖 ] :
產業類股

[ 上櫃 ] : 數據網址 — https://www.tpex.org.tw/web/stock/aftertrading/all_daily_index/sectinx.php?l=zh-tw
[ 上櫃公司 / 產業類股 網頁示意圖 ] :
產業類股

◎ 上櫃公司目前的爬取數據的方式與上市公司不同,上櫃可以利用比較簡單的 QueryTable 網路資料擷取工具,爬取當日產業類股的所有交易數據。
◎ 依照上圖( 步驟4 ) — 按下 按鈕,會出現 櫃買指數暨產業分類指數(日查詢) 的網頁資料。
→ 此資料網頁之網址 :
https://www.tpex.org.tw/web/stock/aftertrading/all_daily_index/sectinx_print.php?l=zh-tw&d=113/01/09&s=undefined,便是 QueryTable / URL 所需要的資料網址。

[ 上櫃產業類股之所有指數資料表 ] :
產業類股

下載上市產業類股指數 to EXCEL

※ 要下載上市櫃產業類股指數之前,必須先建立 EXCEL xlsm(巨集)檔,才能設定內含巨集指令之程式。

[ 設定 xlsm 巨集檔內容 ] :
[ 1 ] : 新增 xlsm檔 : 檔名設定為 : 上市櫃產業類股指數表
[ 2 ] : 新增上市櫃工作表 : 二工作表名稱 : 上市產業類股上櫃產業類股

IE 設定與連線

※ 上市產業類股指數的下載方式,採用 操控IE 瀏覽器的爬蟲方法。


    [ 程式碼 / IE 設定與連線 ] :
    Sub 爬取上市產業指數()
        Sheets("上市產業類股").Select
        Set IE = CreateObject("InternetExplorer.Application")  ' 設定 IE操控物件
        URL = "https://taiwanindex.com.tw/indexes/board/twse"  ' 設定欲瀏覽網頁 – 證交所產業類股指數 網址
        IE.Visible = True  ' 顯示IE網頁 ( PS. 不顯示IE網頁 : False )
        IE.Navigate URL  ' 連線到 證交所產業類股指數 頁面

※ IE 連線後,設定等待網頁加載完成。


    [ 程式碼 / 等待網頁加載完成 ] :
    Do While IE.ReadyState <> 4 Or IE.Busy
        DoEvents
    Loop

爬取上市產業類股指數

[ 表頭資料寫入 — 執行步驟 ] :
[ 1 ] : 開啟上市產業類股網頁 — 網址 : https://taiwanindex.com.tw/indexes/board/twse
[ 2 ] : 開啟 Chrome 開發者工具 : 按下 F12 鍵。
[ 3 ] : 執行網頁刷新 : 按下 F5 鍵。
[ 4 ] : 點擊 檢查工具
[ 5 ] : 點擊 標題名稱 : 點擊完 ,將游標移至左邊網頁,點擊標題 : 指數名稱,此時右邊 Elements 資料夾裡,會顯示標題 : 指數名稱 的HTML語法,得知標題所在位置,便可往上找尋 table 表格標籤,就能發現 ,其中的 ” mt-40 “,就能套進IE公式,找出整個表格內的所有資料。

[ 網頁 與 HTML 之關聯性 ] :

[ 網頁的資料結構 ] :
※ 首先要了解網頁的資料結構 — 表格( table ) 包含所有的列( tr ),每列包含若干單元格( td ),同時表格也可附加標題列( th ),用於定義行的標題。
[ tr ( table row 縮寫 ) ] : 意思是表格中的
[ td ( table data 縮寫 ) ] : 意思是表格中的資料儲存格。
[ th ( table header 縮寫 ) ] : 意思是表格中的標題儲存格。


    [ 程式碼 / 爬取上市產業類股指數 ] :
    Set xTBL = IE.document.getElementsByClassName("mt-40")(2)
    Set xTR = xTBL.getElementsByTagName("tr")
    For xRow = 0 To xTR.Length - 1 ' 執行迴圈 ( tr的標籤數量 ) -- 相當於 列。
        If xRow = 0 Then ' xTR(0) = 標題列
            Set xTH = xTR(0).getElementsByTagName("th")
            For xCol = 0 To xTH.Length - 1  ' 標題內容之欄位。
               Cells(1, xCol + 1) = xTH(xCol).innerText ' 列出 - 標題內容
            Next
        Else ' 其餘 xTR(1~XX) 皆為資料。
            Set xTD = xTR(xRow).getElementsByTagName("td")
            For xCol = 0 To xTD.Length - 1  ' 內容資料之欄位。
               Cells(xRow + 1, xCol + 1) = xTD(xCol).innerText ' 列出 - 內容資料。
            Next
        End If
    Next
End Sub

[ 程式解說 ] :
[ A ] : Set xTBL = IE.document.getElementsByClassName(“mt-40”)(2) : 由HTML語法中得知此表格的標識名稱( class )為 : mt-40,其標題和資料皆存放於第3個物件中( 2 ),如此便可利用 getElementsByClassName 指令,鎖定 (“mt-40”)(2) 的內容資料,將其設定成 xTBL 物件變數。
[ B ] : Set xTR = xTBL.getElementsByTagName(“tr”) : 主架構 : < table class = “mt-40” > 內容包含的 : < tr >,相當於所有列資料(標題+資料)集合。意思就是 : 從 xTBL 物件中,利用 getElementsByTagName(“tr”) 指令,抓取所有 < tr > 標籤的資料,將其設定成 xTR 物件變數。
[ C ] : For xRow = 0 To xTR.Length – 1 : 執行迴圈 — 所有列資料均包覆在 < tr > 裡面,總數為 : xTR.Length。( PS. 物件算法 — 由 0 開始。)
[ D ] : If xRow = 0 Then … Else … End if : 此判斷式的目的是 — 直接利用公式,將標題的內容列印出來。( PS. 可以將其省略,事先在EXCEL儲存格設定好標題名稱,即可。)
[ E ] : Set xTD = xTR(xRow).getElementsByTagName(“td”) : 意思就是 — 從第幾( xRow )個 xTR 物件中,利用 getElementsByTagName(“td”) 指令,抓取所有 < td > 標籤的資料,將其設定成 xTD 物件變數。
[ F ] : For xCol = 0 To xTD.Length – 1 : 同 [ C ] 之說法。
[ G ] : Cells(xRow + 1, xCol + 1) = xTD(xCol).innerText : 將包覆在 < tr > 標籤內的 < td > 內容( innerText ),一一列出。

[ 示意圖 / 上市公司產業類股指數 ] :
產業類股

下載上櫃產業類股指數 to EXCEL

※ 已知,上櫃產業類股指數可以利用 QueryTable 網路資料擷取工具,爬取當日的所有交易數據。

( PS. 若不清楚 QueryTable 網路資料擷取方法,請參考 : 錄製巨集(舊版) 內的錄製步驟,只需注意在URL網址輸入框內,輸入要擷取的資料網址,即可。)

[ 示意圖 / 上櫃公司產業類股指數 ] :
產業類股


[ 程式碼 / 爬取上櫃產業類股指數 ] :
Sub 爬取上櫃產業指數()
Dim xDate$
    Sheets("上櫃產業類股").Select   
    xDate = Format(Now(), "yyyy/mm/dd") ' 今天西元日期
    xDate = (Int(Left(xDate, 4)) - 1911) & Right(xDate, 6) ' 轉換成 : 民國日期
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;https://www.tpex.org.tw/web/stock/aftertrading/all_daily_index/sectinx_print.php?l=zh-tw&d=" & xDate & "&s=undefined", Destination:=Range("$A$1")) ' 連結資料網站 -- 下載之資料由"A1"開始存放。
        '.CommandType = 0 '要刪除 --- 不然會產生錯誤
        '.Name = "futContractsDateExcel_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
        .Delete
    End With    
End Sub

整合上市櫃產業類股當日指數

※ 擷取到上市與上櫃公司的產業類股指數後,便能加以篩選並整合所需的類股指數資料,進而排序和繪製展示圖表。

[ 整合上市櫃產業類股指數之步驟 ] :
[ 1 ] : 篩選需求的上市櫃產業類股
[ 2 ] : 記錄上市櫃產業類股指數
[ 3 ] : 排序上市櫃產業類股指數

篩選需求的上市櫃產業類股

※ 完成上市櫃產業類股的數遽下載,會發現和”產業別“工作表內的產業名稱不同,所以必須手動篩選,列出所有需求的產業名稱。

[ 手動篩選上市櫃產業類股資料 ] :
[ A ] : 首先在原 “產業別” 工作表中插入 C 行和 G 行,以便填入上市和上櫃之 產業類股指數 名稱。


[ B ] : 當你下載上市產業類股指數後,會發現一堆不需要的指數列表,所以才會需要作篩選的動作。
→ 依據原”產業別“工作表中 B 行(上市產業)名稱,逐一搜尋比對下載在”上市產業類股“工作表的 A 行(指數名稱)資料,若符合”產業別“上市產業名稱,則將其”上市產業類股“的上市指數名稱,複製到”產業別“工作表中 C 行(產業類股指數),符合產業名稱的列號位置。

[ 舉例 ] : 參考下圖 — 以左邊”產業別”工作表中 [B24] : 半導體業 為標的,搜尋比對到右邊”上市產業類股”工作表內 [A18] : 半導體類指數 的名稱 — 符合條件,則將其名稱複製到”產業別”工作表 [C24] 的欄位。


[ C ] : 上櫃(櫃買)的產業類股資料與上市不同,皆為有效名稱,則直接將其複製到”產業別“工作表內 G 行位置,即可。


[ 完整數據 / 上市櫃產業類股指數名稱 ] :
產業類股

( PS. 其中 未含電子股指數未含金融保險股指數,可依找自己所想,予以增減。)

記錄上市櫃產業類股指數

※ 完成上市櫃產業類股名稱之標的列表,接下來就是利用VBA程式來擷取並記錄所有上市櫃產業類股指數。

( PS. 執行VBA程式前,必須先新增一組工作表( 名稱 : 上市櫃產業類股當日指數 ),用於存放上市櫃產業類股指數資料。)

[ 示意圖 / 記錄上市櫃產業類股指數 ] :
產業類股


[ 程式碼 / 記錄並排序上市櫃產業類股指數 ] :
Sub 記錄並排序上市櫃產業類股指數()
Dim lastRow%, dataRow%, newRow%, xR% ' 宣告變數
    Sheets("上市櫃產業類股當日指數").Select    
    ' 記錄上市產業類股當日指數
    lastRow = Sheets("產業別").[C65536].End(xlUp).Row ' 查找"產業別"上市產業類股指數(C行)之最後一列號。
    dataRow = Sheets("上市產業類股").[A65536].End(xlUp).Row ' 查找"上市產業類股"指數名稱(A行)之最後一列號。
    For xR = 2 To lastRow ' 迴圈 -- "產業別"上市產業類股指數 為標的列號。
        comName = Sheets("產業別").Range("C" & xR) ' 上市產業標的名稱
        Set xFind = Sheets("上市產業類股").Range("A2:A" & dataRow).Find(comName, LookIn:=xlValues) ' 設定 -- 搜尋公式。
        If Not xFind Is Nothing Then ' 判斷是否搜尋到目標。
            Range("A" & xR) = Left(comName, Len(comName) - 2) ' 指數名稱
            Range("B" & xR) = Sheets("上市產業類股").Range("B" & xFind.Row) ' 最新指數
            Range("C" & xR) = Sheets("上市產業類股").Range("C" & xFind.Row) ' 漲跌點數
            Range("D" & xR) = Sheets("上市產業類股").Range("D" & xFind.Row) ' 漲跌百分比
        End If
    Next
    Range("A2:D" & lastRow).Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlNo ' 漲跌百分比 -- 大小排列    
    ' 記錄上櫃產業類股當日指數
    lastRow = Sheets("產業別").[G65536].End(xlUp).Row ' 查找"產業別"上櫃產業類股指數(G行)之最後一列號。
    dataRow = Sheets("上櫃產業類股").[B65536].End(xlUp).Row ' 查找"上櫃產業類股"指數名稱(B行)之最後一列號。
    For xR = 2 To lastRow ' 迴圈 -- "產業別"上櫃產業類股指數 為標的列號。
        comName = Sheets("產業別").Range("G" & xR) ' 上櫃產業標的名稱
        Set xFind = Sheets("上櫃產業類股").Range("A5:A" & dataRow).Find(comName, LookIn:=xlValues) ' 設定 -- 搜尋公式。
        If Not xFind Is Nothing Then ' 判斷是否搜尋到目標。
            Range("F" & xR) = Sheets("上櫃產業類股").Range("A" & xFind.Row) ' 指數名稱
            Range("G" & xR) = Sheets("上櫃產業類股").Range("B" & xFind.Row) ' 最新指數
            Range("H" & xR) = Sheets("上櫃產業類股").Range("C" & xFind.Row) ' 漲跌點數
            Range("I" & xR) = Range("H" & xR) / Range("G" & xR) ' 漲跌百分比
        End If
    Next
    Range("F2:I" & lastRow).Sort Key1:=Range("I2"), Order1:=xlDescending, Header:=xlNo ' 漲跌百分比 -- 大小排列    
    Set xFind = Nothing ' 清除設定    
End Sub

排序上市櫃產業類股指數

※ 完成上市櫃產業類股指數的存放步驟之後,可以試著將其排序,方便於觀察各產業的漲跌走向。

[ 排序公式( Sort ) ] : 公式參考 — 排序 : Sort 指令
◎ 上市公司 : Range(“A2:D” & lastRow).Sort Key1:=Range(“D2“), Order1:=xlDescending, Header:=xlNo : 排序範圍( A2 ~ D38) / 指定排序開始欄位( D2 ) / 降冪排序( xlDescending ) / 無需表頭( xlNo )。
◎ 上櫃公司 : Range(“F2:I” & lastRow).Sort Key1:=Range(“I2“), Order1:=xlDescending, Header:=xlNo : 排序範圍( F2 ~ I24) / 指定排序開始欄位( I2 ) / 降冪排序( xlDescending ) / 無需表頭( xlNo )。

[ 示意圖 / 排序上市櫃產業類股指數 ] :
產業類股

繪製上市櫃產業類股指數圖表

[ 實際圖表 / 上市產業類股漲跌排行 ] :
產業類股

※ 開始圖表繪製 — 首先繪製上市公司產業類股之圖表 :

操作步驟 ] :
1. 插入圖表 : 在 功能區 點選 : 插入,會出現下方工具列,點擊 : ( 直條圖 ),此時會出現選項,再點選 : ( 平面直條圖 ),便自動會在儲存格位置,插入一個空白圖表。畫面如下 —-


2. 選取資料 : 空白圖表出現後,需要給予 直條圖 的相關資料數據源,此時點選 : 空白圖表,按 : 滑鼠右鍵,選擇 : 選取資料


3. 新增圖例項目 : 出現 選取資料來源 視窗(下左),點選 : 新增 圖例項目,會出現 編輯數列 視窗(下右)。


4. 載入資料源 : 在 編輯數列 視窗裡,有 數列名稱數列值 兩個輸入框。

數列名稱 : 指的是圖表中的資料源名稱。可以直接定義名稱,參考下圖(右),直接填入 : 上市產業類股,在圖表中的圖例項目,便會出現 上市產業類股 的數列名稱。


數列值 : 填入欲展示的上市產業類股資料範圍。點選 : 數列值輸入框,將工作表切換到 : 上市櫃產業類股當日指數,游標從D2欄,拖曳到 D38欄位。
( PS. 也可直接鍵入 : =上市櫃產業類股當日指數!$D$2:$D$38 )。


5. 水平座標值 : 點選 : 水平(類別)坐標軸標籤編輯鈕,會出現 編輯輸入框,將工作表切換到 : 大盤歷史資料,游標從 A2欄,拖曳到 A38欄位。
( PS. 也可直接鍵入 : =上市櫃產業類股當日指數!$A$2:$A$38 )。


[ 擷取完成圖 / 上市產業類股漲跌排行 ] : 圖表內含 上市產業類股(藍線) 及下方水平坐標軸的產業名稱

美化圖表

6. 更改圖表標題 : 將預設的標題 : 上市產業類股,改為 : 上市產業類股漲跌排行
◎ [ 字體屬性 ] : 微軟正黑體(粗體) / 暗紅色 / 大小 : 14。


7. 更改座標軸格式 :
[ A ] : 呼叫座標軸格式 : 滑鼠左鍵 — 雙擊 座標軸,叫出座標軸格式視窗。
[ B ] : 調整座標軸位置 : 原座標軸標籤顯示預設 — 在中間 0軸 位置,這樣會影響圖表展示,故將其調整至圖表下層。
→ 利用 座標軸格式 的屬性設定,點擊 : (座標軸選項),將 標籤 屬性的 標籤位置,改為 :
[ C ] : 調整文字方向 : 原字體設定傾斜 : 45°,點 : ,將 對齊 屬性的 文字方向,改為 : 垂直對齊 : 正中 / 文字方向 : 垂直

◎ [ 字體屬性 ] : 微軟正黑體(細體) / 黑色 / 大小 : 10。


7. 調整長條棒顏色 :
◎ 同樣,滑鼠左鍵 — 雙擊 直條棒,叫出資料數列格式視窗。將 填滿 屬性的 實心填滿 : 圈選 / 負值以補色顯示 : 打勾
→ 完成填滿設定後,在 色彩 屬性會出現 雙色彩 設定 : 左邊(正值) — 紅色 / 右邊(負值) — 綠色


8. 調整圖表背景顏色 :
◎ 滑鼠左鍵 — 雙擊 背景圖表區,叫出圖表區格式視窗。將 填滿 屬性的 漸層填滿 : 圈選
→ 完成填滿設定後,可依照自己喜好的顏色,調整 漸層停駐點 的顏色配置,來繪製漸層背景。


9. 新增圖例標籤 :
◎ 點擊 背景圖表區,叫出圖表項目視窗,點選 : 圖例(右邊) (符號),選擇 : (上方顯示)。
→ 完成顯示設定後,在將其圖例標籤,移至右上角,才不會佔據中間長條圖的顯示範圍。


10. 繪製上櫃產業類股漲跌排行 :
◎ 依照 繪製上市產業類股漲跌排行 的操作步驟,繪製出 上櫃產業類股漲跌排行 顯示圖表。
產業類股

[ 溫馨提醒 ] :
※ 由於上市櫃產業類股項目不會經常更動,故無需利用VBA程式來特意抓取產業數據,只要每日數據更新,將其舊資料覆蓋,即可。

完整程式碼


    [ 程式碼 / 更新上市櫃產業類股指數 ] :
    Sub 更新上市櫃產業類股指數()

        Call 爬取上市產業指數
        Call 爬取上櫃產業指數
        Call 記錄並排序上市櫃產業類股指數

    End Sub

※ 避免文章太過冗長,完整程式碼就以CALL( 呼叫副程式 )的方式處理,至於被呼叫的副程式( SUB ),請自行將文章中的片段程式整合,即可。

完整圖 / 上市櫃產業類股指數排序

產業類股

結論

※ 關注「上市櫃 產業類股 指數」有助於投資人了解不同產業的動態,以及「類股輪動」的現象。文中,則利用IE操控及QueryTable爬蟲工具,取得上市櫃產業類股指數並將其排序,即可捕捉現今表現出色的主流類股,再加以持續監控和分析,則有助於制定投資策略或進行市場研究。

☆ 如果喜歡 股小白 的文章,歡迎到 股小白臉書粉絲頁 點讚,衝人氣,星期五盤後分析大盤趨勢,將來會有 每日公報 : 分析並公布跑分的個股資料,讓大家作為投資參考。 )

☆ 若您對 股票 / 期貨 / 選擇權 投資有興趣,誠摯邀請您加入LINE群組,每日會提供參考數據與教學文章,供您研究。

相 關 文 章

[ 1 ] : [VBA] 每日自動排序前50檔「 強勢股 / 弱勢股 」
※ 關注「 強勢股 」有助於投資者捕捉市場中表現出色的股票,這些股票通常具有穩健的業績和良好的抗跌能力,最主要的是受到主力的青睞,有助於未來的突破發展。文中,則利用DDE語法串接XQ,取得上市櫃所有股票即時數據,再藉由條件刪除及資料排序,成功篩選出前50檔強弱勢股票。

[ 2 ] : [VBA] 自動爬取上市櫃產業類股指數
※ 關注「上市櫃 產業類股 指數」有助於投資人了解不同產業的動態,以及「類股輪動」的現象。文中,則利用IE操控及QueryTable爬蟲工具,取得上市櫃產業類股指數並將其排序,即可捕捉現今表現出色的主流類股,再加以持續監控和分析,則有助於制定投資策略或進行市場研究。

V B A 資 源

EXCEL & VBA功能 – 綜合筆記
※ EXCEL & VBA功能 筆記 : 將針對文章中所使用的 EXCEL 及 VBA公式 / 工具操作 / 巨集設定 / 控制項的運用,做個整合記錄,方便大家在學習當下的參考與使用。

VBA指令 – 彙整筆記
※ VBA 提供相當多的指令用法,VBA指令 彙整筆記,將會陸續記錄 VBA文章 中,所用過的 VBA指令,方便學員們對照運用。

VBA程式語法 – 彙整筆記
※ 語法就是程式的文法。 使用者要與電腦溝通,就必須遵守這些規則。VBA程式語法 筆記 : 將針對 VBA文章 中所使用的 VBA程式語法,做個整合記錄,方便大家在學習當下參考與使用。