http://jinnsblog.blogspot.com/2008/10/excel-query-dynamically-update-data.html

更新:本文是採用Office 2003為範例,若各位是用2010的版本,可以參考「[Excel] 如何在Excel 2010 中匯入IQY檔案

在上篇「[Excel] 匯入外部資料 § 於股票、基金之理財應用」文章中,已介紹了在Excel中匯入外部資料的基本技巧,本篇將再介紹一個非常有用的小技巧,可讓外部資料動態更新,使查詢資料更加人性化。 承上篇所舉的例子,假設要變更查詢標的,一般會在要更新的資料上按右鍵,選擇「編輯查詢」(或由功能列上選擇「資料」、「匯入外部資料」、「編輯查詢」),然後在跳出的「編輯Web查詢」視窗中,重新輸入新資料的地址,舉例來說若要把伍豐變成聯發科,那地址就改成


再按匯入即可,和上篇所述並沒有什麼特別不同,只是當查詢的筆數越來越多或每次要變更資料都要重覆這個動作,是不是覺得很麻煩呢?此時,就可以利用Microsoft Query來達到動態更新的功能,解決上述的麻煩。(註:MS Query簡單的來說就是外部資料庫和Excel中溝通橋樑,在微軟的Office Online上有清楚的說明,在此便不贅述。)


MS Query的範圍蠻廣的,本文只針對Web查詢部分來作說明:欲建立一個MS Query Web查詢的檔案(副檔名為iqy),有二個比較直覺的方法,第一種是用文書編輯器,按照這邊的舊文手動建立「XXX.iqy」檔案,這個方法要知道每個欄位代表的意思才能有所發揮,比較不適合一般使用者,第二種是本篇採用的方法,請直接在上圖右上角的地方,按「儲存查詢」的圖示,這樣就可以簡單的存成一個 iqy 檔案,若用編輯器打開它,可以看到以下的資訊:



現在讓我們直接切入重點,在第三行的地方即是要查詢各資料的地址,由此可以發現伍豐、聯發科的查詢網址,不同的地方只在於最後的數字,這也是要動手腳的地方,請把數字部分改成 ["參數名稱","提示字詞"] 這種格式存檔就可以了,實際的範例如下圖所示(其實提示字詞隨便填就好,本篇也不會用到 XD):


接著由功能列中的「資料」、「匯入外部資料」、「匯入資料」,來匯入剛剛所建立的 iqy 檔案,眼尖的讀者應該可以下面的擷圖發現和上篇文章的範例圖有一點不同,即是現在這個視窗多了一個「參數」的選項可供設定,這也就是我們最主要的目的所在了。


按下參數後,可以發現剛剛設定的一些參數已經出現在這個視窗中,各位可以直接按確定試試看有什麼事情會發生,至於第二個選項,其實只要在這輸入股票代號就可以更新了,但本篇要說明的是第三個選項,請各位選擇「以下列儲存格做為參數值的來源」,然後填入欲當來源的儲存格,這裡要注意一點,在選儲存格的時候,可以留一點空間下來,防止資料把來源儲存格給蓋掉了,甚至為了美觀起見,可以把這個來源儲存格放在千里之外不讓人發覺,另外建議先在來源儲存格填入一個預設值,例如:8706,最後記得把「當儲存格值變更時自動更新」勾起來。

 

這樣就大功能告成了,以後只要在儲存格A10的地方輸入股票代號資料就會自動更新,不用再一步一步的手動設定囉,此時再按右鍵的話,也會多了一個「參數」選項,若之前的設定不滿意可以從這重新做設定。
 

若要查詢不同的網站,雖不能說百分之百相同,但理論是差不多的,請自行加以類推,如:GOGOFUND,要變更的就是在基金代號部分。魚竿都給各位了,怎麼釣魚就靠自己囉。

延伸閱讀:
[Excel] 如何在Excel 2010 中匯入IQY檔案
13 款免費理財軟體 / Excel 整理

......

Related Posts Plugin for WordPress, Blogger...
47 意見
  1. 匿名 2008年10月30日下午12:42  

    版大, 請問如果是 要擷取 證交所的以下資料, 日期更改的部份要如何用呢?? 好像不能用您上述的方法. 不好意思,問了一個怪問題. 感謝.
    http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/genpage/Report200807/A11220080709MS.php?select2=MS&chk_date=97/07/09

  2. 2008年10月30日下午3:36  

    我沒試過,但看你的網址,有關於97/07/09部分,有3個地方,這種多個變數的...可能要研究看看耶

  3. dlin (dlin66@yahoo.com) 2008年10月30日下午5:03  

    喔, 是喔? 原來是有3個地方. 謝謝你那麼快的回覆. 你的資訊很實用. 很喜歡. 支持支持.

  4. 2008年10月30日下午10:58  

    我所謂的三個地方是由網址而來的,網址有包含以下部分
    1. Report200807
    2. A11220080709MS
    3. 97/07/09
    以上三個很直覺得都和日期有關,所要動態的話,應該三個都要改

  5. 匿名 2008年11月6日下午3:33  

    我自己測試了. 三個地方都設定更改了. 但是其實最後一個不用改. 因為我輸入第二個日期時, Excel就可以自動的捉資料了. 感謝你的熱心..

  6. 匿名 2009年1月29日下午10:31  

    版大 您好:

    http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/genpage/Report200807/A11220080709MS.php?select2=MS&chk_date=97/07/09

    http://www.twse.com.tw/ch/trading/exchange/FMNPTK/genpage/Report200901/2002_F3_1_11.php?STK_NO=2002&myear=2009&mmon=01

    如何使用 EXCEL 自動抓取資料?

    先感謝 版大解惑!

  7. 子靖 2009年1月29日下午11:11  

    這個問題和樓上的問題應該相同喔!
    你可以參考一下

  8. 匿名 2009年1月30日上午1:00  

    版大 您好:

    http://www.twse.com.tw/ch/trading/exchange/FMNPTK/genpage/Report200901/2002_F3_1_11.php?STK_NO=2002&myear=2009&mmon=01

    己解決: 如下:

    http://www.twse.com.tw/ch/trading/exchange/FMNPTK/genpage/Report200901/["股號","輸入"]_F3_1_11.php?

    另一個問題還要麻煩 您了。

    Happy 牛 Year! 「牛」轉 「錢」坤!

  9. 匿名 2009年1月30日上午2:32  

    版大 您好:

    http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/genpage/Report200807/A11220080709MS.php?select2=MS&chk_date=97/07/09

    試了很久,還是不行耶。可否將正確的資料po上網?


    另:excel 有何公式可統計 1月 2月 3月……各有幾次?
    資料如下:

    6月20日
    1月27日
    12月31日
    1月8日
    2月15日
    7月2日
    3月15日
    4月9日
    10月4日
    2月22日
    2月21日
    12月11日
    11月6日
    3月3日
    1月3日
    12月1日
    10月1日
    4月17日

    再一次麻順 您。

    謝謝解惑!

  10. 2009年1月31日下午8:54  

    http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/genpage/Report["年月","輸入格式:200807"]/A112["年月日","輸入格式:20080711"]MS.php?select2=MS&chk_date=["年月日","輸入格式:97/07/11"]

    類似這樣,但根據前位網友的說明以及自己的測試,不需要第三個參數亦可

  11. 2009年1月31日下午8:57  

    計算次數的話,可試試 COUNTIF 函數
    對了,要留言的話,可隨便留個名字,這樣比較好回覆
    可和其他匿名者區隔

  12. 求知者 2009年2月3日下午8:43  

    版主 您好:

    http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/genpage/Report["年月","輸入格式:200807"]/A112["年月日","輸入格式:20080711"]MS.php?select2=MS&chk_date=["年月日","輸入格式:97/07/11"]

    困難解決了! 非常感謝!

    速度快了 NNNNN 倍。

    好高興喔!

    再次感謝 版主!

  13. 求知者 2009年2月3日下午9:42  

    版主 您好:

    再一次麻煩 您。 這是EXCEL 的資料,
    ABCD是欄,1234....是列。

    A B C D
    1 年度 日期 股價
    2 80 4月9日
    3 81 1月29日
    4 82 12月31日
    5 83 12月27日
    6 84 1月6日
    7 85 6月14日
    8 86 7月29日
    9 87 1月15日
    10 88 5月5日
    11 89 1月28日 9
    12 90 2月27日 13
    13 91 11月18日 11
    14 92 11月6日 8
    15 93 10月12日 12
    16 94 3月1日 6
    17 95 12月27日 7
    18 96 10月3日 9
    19 97 5月20日 10 (97年在B19)
    = 2009/5/20

    --------------------------------
    A B C D
    1 年度 日期 股價
    2 91 3月26日 12
    3 92 11月6日 9
    4 93 10月12日 18
    5 94 6月27日 14
    6 95 12月29日 8
    7 96 10月16日 19
    8 97 7月14日 21(97年在B8)
    9 (底下無資料,因年資較少)
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    -------------------------------
    問題一:

    如果利用匯入外部資料,匯入以上兩筆股市資料
    不同檔案,不同股號的資料。

    中鋼的資料從B2~B19(80年~97年)
    盛餘的資料從B2~B8 (91年~97年)年資較少

    請問: 有何方法可將上列資料從最近一筆(97年)
    向上排列到89年。

    ------------------------------------
    24 B C
    25 年度
    26 89 9
    27 90 13
    28 91 11
    29 92 8
    30 93 12
    31 94 6
    32 95 7
    33 96 9
    34 97 10 (起點,對應向上↑)
    -------------------------
    24 B C
    25 年度
    26 89 0 (無資料)
    27 90 0
    28 91 12
    29 92 9
    30 93 18
    31 94 14
    32 95 8
    33 96 19
    34 97 21 起點,對應向上↑)
    ----------------------------------------

    這樣表示不知夠不夠清楚?

    知識廣博的版大,再次麻煩 您。

    能夠認識版大,真好!

  14. 子靖 2009年2月3日下午10:00  

    一般我們是不會去動匯入的資料,因為這些是參考的資料
    主要是要利用這些資料再去做分析的動作
    以你的需求來看的話,我會將匯入的資料做一些簡單的判斷,例如用IF的函數,對盛餘的資料做檢查,若無資料則填入0,那這樣二家公司的年份就會一樣,只差在有無「0」而已,當這個步驟做好之後,再進行簡單的排序就行了,要排序的話在Excel的工具列上就有了

  15. 匿名 2009年2月10日上午12:23  

    請問大大,如果是要登入使用者資料的網路存放位置,應該怎麼做才能自動執行匯入excel? 進去網頁後ie工具列上的"使用excel編輯選項會變灰色(不能用),這種情況有辦法使用excel自動擷取嗎?

  16. 子靖 2009年2月10日上午9:33  

    沒試過耶,有實例嗎?

  17. 匿名 2009年2月14日下午4:58  

    這是可免費申請帳號的指數網站,裏頭提供指數的內容,進網站時要先登入才能下載,如果要直接用excel更新上頭的檔案時應該怎麼克服登入的步驟?
    http://www.stoxx.com/download/data/change_files/change_tmi_components.xls

  18. 子靖 2009年2月14日下午6:27  

    你給的檔案是直接下載,我不會用Excel更新網路上的檔案喔,這邊說的是網路上有表格,再來更新!
    或者你可以試試先用IE登入之後,再用Excel更新看看

  19. 路過剛好看到 2009年2月20日上午11:06  

    可上網搜尋用VBA做登入的動作之後,再作擷取的動作即可。^_^

  20. 子靖 2009年2月20日下午3:05  

    原來用VBA可以呀!謝大大指點

  21. 匿名 2009年2月22日下午12:38  

    原來..終究還是得好好鑽研vba..感謝路人指點。

    可否再請教下列網址上的表格案例,它的表格上方可以有不同選擇,請問如果我想對三個下拉選點做預設定期擷取,例如:環球大型均衡型股票+國外基金+基金表現,能在EXCEL中設定這些條件嗎? 我曾試過用結果頁面之url來連結更新,還是沒辦法直接載到我要的目標畫面Orz

    http://tw.morningstar.com/HKG/Fund/Tool/fundsresult.asp

  22. 子靖 2009年2月22日下午1:24  

    在選擇這三個下拉式選單時,網址並不會改變,所以基本上我認為應該是無法利用文中的方法做到,理由是文中的iqy都是利用網址的不同來擷取資料的,搞不好VBA可以做到!

  23. 匿名 2009年2月23日上午9:17  

    這樣子啊..
    唉~看來我還是得好好練VBA才能解決我的問題,謝謝版主~

  24. Marvin-_- 2009年3月13日下午4:58  

    請問大大
    我從下列網址的資料匯出幾個表格做成分頁
    http://www.cathaysec.com.tw/marketinfo.htm
    有資產負債表、損益表、基本資料、
    我也想照您的方式製作
    可是卻卡住了 因為這個網頁不論輸入甚麼股票代號
    他的網址都不變 無法照您的方法製作我需要的步驟
    我是想設計成當我輸入其他股票代號
    這些分頁的資料也會同步更新
    不知道您有甚麼好的解決方法呢?

  25. 2009年3月13日下午6:40  

    可能要和樓上的做法一樣,使用VBA

  26. sam 2009年5月9日下午5:00  

    大大您好,
    請問這個
    http://card.url.com.tw/realads/map_latlng.php

    如何使用 EXCEL 自動抓取資料?

  27. 子靖 2009年5月9日下午6:42  

    ㄟ...這不是地圖嗎?和我文中的格式不太符合耶
    我不知道可不可以

  28. Jo 2009年7月26日下午6:11  

    請問大大我已按「儲存查詢」的圖示,應該已存成一個 iqy 檔案,接著想用"筆記本"打開它,但在c槽ms office下都找不到queries, 所以也找不到我儲存的.iqy檔, 請問要如何找到並打開這.iqy檔???感恩

  29. 子靖 2009年7月26日下午10:03  

    用筆紀本是可以打開的,任何文字編輯軟體應該都可以
    iqy存在哪,這個要問你喔,看你存在哪,就到那去找就行,要不然你存在桌面好了,應該都找的到,除非你把副檔名iqy的檔案隱藏了

  30. Jo 2009年7月26日下午11:42  

    我以前從來沒用過iqy檔, 如果我隱藏了iqy, 可否告訴我如何把它叫出來?

  31. 子靖 2009年7月27日下午9:47  

    如果你沒有特別設定,應該是不會隱藏的
    或者到檔案總管→工具→資料夾選項的檢視或檔案類型看看

  32. Jackson 2009年9月1日下午8:56  

    板大請教您 如果依照使用iqy的格式去抓雅虎的股價 該怎樣寫iqy才可以只顯示收盤價就好 而不是顯示出整個雅虎股價的格式?

  33. 子靖 2009年9月4日下午4:04  

    最簡單的方法是將捉取的資料放在別的儲存格,然後用指定的方式來過濾,例如把資料的儲存格放在A1000,然後用指定的方式「=A1000」之類來呈現

  34. moses 2010年6月13日下午6:39  

    請問不知是否有辦法這樣設定"網址"也變成參照某個欄位的變數
    我將整個網址都弄成變數
    會無法讀入網頁內容

  35. 子靖 2010年6月13日下午9:01  

    可能會牽扯到格式解析的問題

  36. Yumi 2010年8月5日下午1:27  

    請問這種網站有辦法嗎?
    http://www1.ndmctsgh.edu.tw/pharm/mu_search.aspx
    想建立一個資料庫在excel
    比如說A開頭的藥有哪些
    各個藥的副作用及禁忌等等
    感謝您!

  37. 子靖 2010年8月10日上午12:19  

    這不是純資料的網頁,以本文的做法應該行不通!

  38. 匿名 2010年8月27日下午7:31  

    想請問一下
    http://stock.wearn.com/netbuy.asp
    這個網頁的資訊該如何匯出呢?
    我試了修改記事本
    可是也都沒辦法成功耶
    請您幫幫在下

  39. 子靖 2010年8月30日上午11:42  

    http://stock.wearn.com/chartstock.asp?mode=search&kind=2002
    要有變動的網址才行,例如要查中鋼的技術線型,你可以試著修改後面的2002

  40. 匿名 2011年6月24日上午2:46  

    hello,無意間發現這動態更新,早點發現就不會那麼累把台股10年財報資料抓到excel去分析.........

    很感謝你的分享呦!!!用這粉方便,尤其對不會程式的我.

    3Q

  41. 子靖 2011年6月25日下午11:23  

    我也是門外漢啦,互相研究囉

  42. luke 2011年8月26日下午1:07  

    版主您好~請問一下,XXX.iqy這個檔案裏面的文字是要跟您圖片裡的文字打一樣的嗎(除了改網址)?
    另外,再匯入的部分,不知道是不是exccel版本不一樣的關係(我是2010),我好像找不到要怎麼把這個.iqy匯進excel....
    謝謝版主!

  43. 子靖 2011年8月28日下午3:17  

    (1) 圖片中的值是自動產生出來的,你產生的值可能會首我不一樣
    (2) 2010應該是「資料」→「從其他來源」→「從Microsoft Query」那邊

  44. luke 2011年8月29日下午3:46  

    請問一下版主,我按照「資料」→「從其他來源」→「從Microsoft Query」那邊後,http://imageshack.us/photo/my-images/37/excelgl.jpg/

    出現這樣的畫面,該如何進行下一步把iqy匯入excel?
    感謝您耐心回答~~

  45. 子靖 2011年8月30日上午10:51  

    不好意思,我剛實際測試了一下,由「資料」→「現有連線」→按下方的「瀏覽更多」選擇iqy的檔案,便可匯入

  46. Unknown 2011年10月20日下午6:27  

    http://www.taifex.com.tw/chinese/3/7_12_3.asp
    這個網址不知道大大有沒有什麼辦法作動態更新

    不管我選擇舊日期的資料作匯入excel
    他都只會給最新日期的資料,而不會是舊日期的資料
    例如,我選10月19號資料作匯入excel
    結果在excel也只會匯入10月20號的最新資料

    2011年10月20日下午6:23

  47. 魏子靖 2011年12月23日上午9:43  

    以本文的方法,是無法套用在此網址的,這個網址不會因內容不同而變動

張貼意見