##title##

2016年11月17日

Excel:INDIRECT,固定公式

之前在一個共用的excel裡,(實際是用google試算表)常發現就算是某些被鎖定的區域,公式的位置有時候還是會跑掉,原本以為是甚麼bug,困擾了很久。

前一陣子才想到可能是excel本身的功能,就是如果移動目標儲存格,原本有用到該儲存格的公式中對應的儲存格位置也會修改。本來這是一個很方便的功能,但在這種協同編輯的表格裡面就變成一種惡夢。

所以找到這個方法後以後公式應該不會再出錯了吧。


然後這個公式可以不用參照,例如:
=INDIRECT("A1")

這樣就是直接指向A1,而非A1的參照。


語法

INDIRECT(ref_text, [a1])

INDIRECT 函數語法具有下列引數:

    Ref_text    必要。單一儲存格的參照,其中包含 A1 樣式參照、R1C1 樣式參照、定義為參照的名稱,或定義為文字字串的儲存格參照。如果 ref_text 不是有效的儲存格參照,INDIRECT 會傳回 #REF! 錯誤值。

        如果 ref_text 參照另一個活頁簿 (外部參照),則必須開啟另一個活頁簿。如果來源活頁簿未開啟,INDIRECT 會傳回 #REF! 錯誤值。

        附註    Excel Web App 不支援外部參照。

        如果 ref_text 參照的儲存格範圍超出 1,048,576 的列限制或 16,384 (XFD) 的欄限制,INDIRECT 會傳回 #REF! 錯誤。

        附註    在 Microsoft Office Excel 2007 之前的舊版 Excel 中,此行為是不同的,會忽略超出的限制並傳回值。

    A1    選用。指定 ref_text 儲存格中所包含參照類型的邏輯值。

        如果 a1 為 TRUE 或省略,則 ref_text 會被解釋成 A1 樣式參照。

        如果 a1 為 FALSE,則 ref_text 會被解譯成 R1C1 樣式參照。



https://support.office.com/zh-tw/article/INDIRECT-%E5%87%BD%E6%95%B8-474b3a3a-8a26-4f44-b491-92b6306fa261

2016年8月21日

外公的西瓜

外公是個純樸的農夫,曾聽他說,牛會流淚,是有感情的動物。而他回應的感情,是一輩子不吃牛肉,因為那是他的伙伴。外公不會要求子孫跟他一樣,他不論對子孫或伙伴都很好。

每次看見外公,他總是很慈祥的微笑。過年的時候總不願意收我們這些孫子的紅包,即使這絲毫不會造成我們的負擔,他依舊要用他的方式來照顧我們每一個人。

以往夏天,能吃到他種的西瓜是最幸福的消暑方式。拿鐵湯匙,挖進切一半的紅色冰涼西瓜。總是很甜,那是外公汗水換來的甜。

這個夏天後,再也嘗不到這樣的西瓜了。

謝謝您教我善良,謝謝您教我樸實,路上好走。


--
2016/8/20 22:25,外公沒有病痛了。

2016年5月5日

Alienware Area 51-R2

之前為了工作順便圓阿宅夢,買過一台 Alienware M14x R2 Laptop 整新機。

用了以後覺得 Alienware 實在相當中二,非常適合想回去當屁孩的大叔我,於是開始走向中二之路。

後來陸續又買中二滑鼠 Tt eSPORTS Level 10 M一個放公司一個放家裡。

然後當我看到 Alienware Area 51-R2 的中二機殼後,整個覺得實在是太狂。

一直很想找一個能這麼中二造型的機殼,但都找不太到,原本想說先買個中二RGB機械鍵盤壓壓驚。

結果清明節連假被同樣喜歡 Alienware 的前同事通知,Dell Outlet Alienware 竟然有七折優惠碼活動!

心理內心OS:實~在~太~狂~啊~啊~啊~!㊣乂↖煞氣a七折↘乂㊣

然後又看到一台規格感覺還蠻便宜的...於是乎,經歷了將近一個月的等待...(海關卡好久)

今天出門就不小心踢到這個箱子...

簡單開箱:

外觀&內部:



其實對我來說中二機殼才是主體,其他都是附加的。附加的東西如下:
CPU:Intel i7-5820K(附水冷散熱器)Haswell E 6C12T 3.3~3.60 GHz(22 nm,PCI Express 3.0,線道數量上限 28,最大記憶體通道數量4,最大記憶體大小64 GB)
MB:X99晶片組(OEM)
Video Card:Dual NVIDIA GeForce GTX 980 SLI(980大概只能吃PCIe3.0 x 8
RAM:16GB Quad Channel DDR4 at 2133MHz(4 x 4G走四通道)
SSD:128GB 2.5 inch
HD:2TB SATA Hard Drive 7200 RPM
PSU:Alienware 850W(OEM)
OS:Windows 8.1 (Free Upgrade to Windows 10 Home) 64BIT(英語)

Others:
機殼底座
8X DVD +/- RW Drive(吸入式)
Intel 7260AC Dual-Band 2x2 802.11 ac WiFi + Bluetooth 4.0
Alienware 鍵盤(英語)
滑鼠
Xbox 360 控制器
Office 2013 序號
CyberLink Media Suite
Office 365 - 1 Month 序號
Wave Systems Software
AL Area 51 R2 : 1 Year Premium Support
(Dell Outlet電腦規格和配件都不盡相同,有興趣想買的記得要看仔細)

不過Xbox 360 控制器和Office 2013 序號沒找到,正在詢問客服中。


Area 51-R2的可擴充性較低,不過反正就像我說的,機殼才是主體,I dont care。

原價美金$2,749,70%折扣後$1,924.3,運費與手續費$109,總計$2,033.3。(NTD $66,745)
代寄是使用 spearnet。服務費美金$30,運費$310,俄勒岡州轉運費$71,合計$411。(NTD $13,316)
通關及稅金 NTD $5,405
故所有費用合計是 66,745+13,316+5,405 = NTD $85,466
相關購買時間歷程如下:
Alienware Area 51-R2 i7-5820K、980 SLI、16GB、128GB SSD、2TB HD(原價美金 $2,749,70%折扣後$1,924.3,運費與手續費$109,總計$2,033.3)
高度:569.25 公釐 (22.411 吋)、深度:638.96 公釐 (25.156 吋)、寬度:272.71 公釐 (10.736 吋),長寬高合計148cm
Dell表示起始重量:28 kg(61.73 磅)
但spearnet秤重:31.8 kg(70.6 磅)(oversize 195cm, overweight)
4/2 購買,扣款失敗
4/4 扣款成功,NT $65,759,國外交易服務費NT $ 986
4/5 發貨(fedex)(應該是美東時間)
4/6 到spearnet俄勒岡州倉庫,spearnet顯示等待轉往加州倉庫(應該是美西時間)
4/8 顯示包裹運回加州倉庫中(應該是美西時間)
4/13 顯示包裹抵達加州倉庫,請求送為台灣
4/14 收到通知付費(服務費+運費+俄勒岡州轉運費)
4/15 通知已寄出( 黑貓宅急便)
4/18 通知到台灣但需要被查關,提供委任書,通關服務費NT $500元
4/19 通知委任書修改,且因為是電腦,且內建wifi或藍芽,故需要補NCC-自用切結書
4/20 通知回報檢驗代辦費NT 1,575元
4/22 通知NCC比對沒通過,去電處理的人員不在
4/25 再次去電處理的人員後,回覆說需要提供網頁檔。提供後代辦人員說他們也是提供這個,但沒過,叫我要請dell提供工作頻率2.4Ghz及輸出功率20.0dBm出示證明
4/26 寄從網路上抓的Intel Dual Band Wireless-AC 7260資料試看看
4/28 代辦跟我說又不能改品項名稱,不然又要付100塊修改費用。我跟他說雖然那台電腦型號是Alienware Area 51-R2,但網卡是Intel Dual Band Wireless-AC 7260,因為他說我講得太複雜了,還要補上一份說明函
4/29 代辦告訴我文件太多了,他自己又傳了一份型錄,但型錄上其實也沒有工作頻率及輸出功率,但結果很神奇的,就過了!稅NT $ 3,130,商檢規費NT $ 200
5/3 到貨

合計花費:
項目USD
NT
Alienware Area51 R2
$2,03365,759
國外交易服務費 986
服務費、運費、俄勒岡州轉運費合計$41113,316
通關服務費 500
檢驗代辦費 1,575
商檢規費 200
 3,130
合計 85,466
 

PS:俄勒岡州是免稅區,寄俄勒岡州轉運1磅要美金$1,在俄勒岡州倉庫物品大約會被放1週時間。

如果消費稅算起來比俄勒岡州倉庫轉運費便宜的話,也可以選擇不轉俄勒岡州,這樣還會快一點到。


Alienware windows 改裝 Note:
win7 iso製作為開機隨身碟

sp 廣穎隨身碟無法寫入問題

oem 登入圖

解決以USB安裝Windows 7時出現「找不到任何裝置驅動程式」、「遺失必要的CD/DVD裝置驅動程式」

Windows 7 USB3.0問題

2016年3月1日

Autohotkey:CoordMode,延伸螢幕座標控制

用AU3_spy看Mouse Position的On Screen座標,發現如果座標是在延伸螢幕的座標,例如:

mousemove, -100, -500

游標控制都會失敗,例如滑鼠游標會跑到延伸螢幕的左上角。

但如果是在主要螢幕就不會有這個問題了,PTT問了下,mkz6大大提供了解法。

設置:
CoordMode, Mouse, Screen


CoordMode說明
为多个命令设置坐标模式, 相对于活动窗口还是屏幕.
CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Window|Client]
参数

Param1
ToolTip: 作用于 ToolTip.
Pixel: 作用于 PixelGetColor, PixelSearchImageSearch.
Mouse: 作用于 MouseGetPos, Click 以及 MouseMove/Click/Drag.
Caret: 作用于内置变量 A_CaretXA_CaretY.
Menu: 作用于为 "Menu Show" 命令指定坐标的时候.

Param2
如果省略 Param2, 则默认为 Screen.
Screen: 坐标相对于桌面 (整个屏幕).
Relative: 坐标相对于活动窗口.
Window [v1.1.05+]: 与 Relative 效果相同, 但由于含义清晰, 因此建议使用.
Client [v1.1.05+]: 坐标相对于活动窗口的工作区, 其中不包括标题栏, 菜单栏 (如果它含有标准菜单栏的话) 和边框. Client 坐标模式较少依赖于操作系统版本和主题.

备注
如果没有使用此命令, 除了另外注明的那些外的所有命令 (例如 WinMoveInputBox) 都使用相对于活动窗口的坐标模式.
每个新运行的 线程 (例如 热键, 自定义菜单项定时 子程序) 都会以此命令的默认设置开始. 通过在脚本的自动执行段 (脚本的顶部) 使用此命令可以改变这个默认设置.
相关
Click, MouseMove, MouseClick, MouseClickDrag, MouseGetPos, PixelGetColor, PixelSearch, ToolTip, Menu

示例
CoordMode, ToolTip, Screen ; 把 ToolTips 放置在相对于屏幕坐标的位置: CoordMode, ToolTip ; 和上面效果相同, 因为 "screen" 是默认的坐标模式.

Desktop GPU Performance Hierarchy Table December 15, 2015


Desktop GPU Performance Hierarchy Table December 15, 2015

最近可能會用到,單純先做個紀錄。



Nvidia GeForce AMD Radeon Intel
GTX Titan Z R9 295X2  
Titan X, 980 Ti HD 7990, R9 Fury X  
GTX 980, 690, Titan Black R9 Fury. Fury Nano  
GTX 780, 780 Ti, 970, Titan R9 290, 290X, 390X, 390  
GTX 590, 680, 770 HD 6990, 7970 GHz Ed., R9 280X, 380  
GTX 580, GTX 670, GTX 960 HD 5970, 7870 LE (XT), 7950, 280, 285  
GTX 660 Ti, GTX 760 HD 7870, R9 270, R9 270X, R7 370  
GTX 295, 480, 570, 660 HD 4870 X2, 6970, 7850, R7 265  
GTX 470, 560 Ti, 560 Ti 448 Core, 650 Ti Boost, 750 Ti HD 4850 X2, 5870, 6950, R7 260X  
GTX 560, 650 Ti, 750 HD 5850, 6870, 7790  
9800 GX2, 285, 460 256-bit, 465 HD 6850, 7770, R7 260, R7 360 Integrated: Iris Pro Graphics 6200
GTX 260, 275, 280, 460 192-bit, 460 SE, 550 Ti, 560 SE, GT 650, GT 740 GDDR5 HD 4870, 5770, 4890, 5830, 6770, 6790, 7750 (GDDR5), R7 250 (GDDR5), R7 250E  
8800 Ultra, 9800 GTX, 9800 GTX+, GTS 250, GTS 450  HD 3870 X2, 4850, 5750, 6750, 7750 (DDR3), R7 250 (DDR3) Integrated: HD Graphics 530
8800 GTX, 8800 GTS 512 MB, GT 545 (GDDR5), GT 730 64-bit GDDR5 HD 4770  
8800 GT 512 MB, 9800 GT, GT 545 (DDR3), GT 640 (DDR3), GT 740 DDR3 HD 4830, HD 5670, HD 6670 (GDDR5), HD 7730 (GDDR5)  
8800 GTS 640 MB, 9600 GT, GT 240 (GDDR5) HD 2900 XT, HD 3870, HD 5570 (GDDR5), HD 6570 (GDDR5)  
8800 GS, 9600 GSO, GT 240 (DDR3) HD 3850 512 MB, HD 4670, HD 5570 (DDR3), HD 6570 (DDR3), HD 6670 (DDR3), HD 7730 (DDR3), R7 240  
8800 GT 256 MB, 8800 GTS 320 MB, GT 440 GDDR5, GT 630 GDDR5, GT 730 128-bit GDDR5 HD 2900 Pro, HD 3850 256 MB, 5550 (GDDR5)  
7950 GX2, GT 440 DDR3, GT 630 DDR3, GT 730 128-bit DDR3 X1950 XTX, HD 4650 (DDR3), 5550 (DDR3)  
  Integrated: HD 7660D  
7800 GTX 512, 7900 GTO, 7900 GTX, GT 430, GT 530 X1900 XT, X1950 XT, X1900 XTX   
7800 GTX, 7900 GT, 7950 G, GT 220 (DDR3) X1800 XT, X1900 AIW, X1900 GT, X1950 Pro, HD 2900 GT, HD 5550 (DDR2)  
  Integrated: HD 7560D  
7800 GT, 7900 GS, 8600 GTS, 9500 GT (GDDR3), GT 220 (DDR2) X1800 XL, X1950 GT, HD 4650 (DDR2), HD 6450, R5 230  
  Integrated: HD 6620G, 6550D, 7540D  
6800 Ultra, 7600 GT, 7800 GS, 8600 GS, 8600 GT (GDDR3), 9500 GT (DDR2) X800 XT (& PE), X850 XT (& PE), X1650 XT, X1800 GTO, HD 2600 XT, HD 3650 (DDR3), HD 3670 Integrated:Intel HD Graphics4000
  Integrated: 6520G, 6530D, 7480D  
6800 GT, 6800 GS (PCIe), 8600 GT (DDR2), GT 520 X800 XL, X800 GTO2/GTO16, HD 2600 Pro, HD 3650 (DDR2),   
  Integrated: 6410D, 6480G  
6800 GS (AGP) X800 GTO 256 MB, X800 Pro, X850 Pro, X1650 GT  
  Integrated: 6370D, 6380G  
6800, 7300 GT GDDR3, 7600 GS, 8600M GS  X800, X800 GTO 128 MB, X1600 XT, X1650 Pro  
6600 GT, 6800LE, 6800 XT, 7300 GT (DDR2), 8500 GT, 9400 GT 9800 XT, X700 Pro, X800 GT, X800 SE, X1300 XT, X1600 Pro, HD 2400 XT, HD 4350, HD 4550, HD 5450 Integrated: Intel HD Graphics 3000
  Integrated: HD 6310, HD 6320  
FX 5900, FX 5900 Ultra, FX 5950 Ultra, 6600 (128-bit) 9700, 9700 Pro, 9800, 9800 Pro, X700, X1300 Pro, X1550, HD 2400 Pro  
Integrated: 9300, 9400 Integrated: HD 3200, HD 3300, HD 4200, HD 4250, HD 4290, HD 6250, HD 6290   
FX 5800 Ultra, FX 5900 XT 9500 Pro, 9600 XT, 9800 Pro (128-bit), X600 XT, X1050 (128-bit) Integrated: Intel HD Graphics 2000
4 Ti 4600, 4 Ti 4800, FX 5700 Ultra, 6200, 8300, 8400 G, G 210, G 310 9600 Pro, 9800 LE, X600 Pro, HD 2300 Integrated: Intel HD Graphics
  Integrated: Xpress 1250  
4 Ti4200, 4 Ti4400, 4 Ti4800 SE, FX 5600 Ultra, FX 5700, 6600 (64-bit), 7300 GS, 8400M GS, 9300M G, 9300M GS 9500, 9550, 9600, X300, X1050 (64-bit)  Integrated: Intel HD Graphics
3 Ti500, FX 5200 Ultra, FX 5600, FX 5700 LE, 6200 TC, 6600 LE, 7200 GS, 7300 LE 8500, 9100, 9000 PRO, 9600 LE, X300 SE, X1150 Integrated: GMA X4500
Integrated: 8200, 8300    
3, 3 Ti200, FX 5200 (128-bit), FX 5500 9000, 9200, 9250  
FX 5200 (64 bit) 9200 SE Integrated: GMA X3000, X3100, X3500
Integrated: 6100, 6150, 7025, 7050 Integrated: Xpress 200M, Xpress 1000, Xpress 1150  
2 GTS, 4 MX 440, 2 Ultra, 2 Ti, 2 Ti 200 7500 Integrated: GMA 3000, 3100
256, 2 MX 200, 4 MX 420, 2 MX 400 SDR, LE, DDR, 7000, 7200 Integrated: GMA 500, 900, 950
Nvidia TNT Rage 128 Discrete: Intel 740


來源:Tom's Hardware

2016年2月28日

Autohotkey:大量BT種子批量下載並改檔名腳本

這個腳本主要是為了用來解決我常有大量種子下載需求。

因為在下載種子的時候,通常我就會把我想要存成的檔名或資料夾名稱直接改為種子名稱。但是當有幾十個種子要下載的時候,我必須重複這樣的動作:
  1. 按F2。
  2. Ctrl+C複製種子檔名。
  3. Enter開啟種子。
  4. 檢視這是單一檔案或是一個資料夾。如果是資料夾的話直接貼上名稱,但如果是單一檔案就只貼上名稱到副檔名前,所以如果是手動的話這時候會比較麻煩。因為只有單一檔案這樣的種子它的路徑可能會是「C:\Download\XXXX123.avi」,就算你的設定是隱藏副檔名,你直接貼上,它下載下來的檔案會變成沒有副檔名「XXXX123」這樣的檔案。
  5. 選擇想要保留的檔案(因為有時候種子裡會有很多垃圾檔)按Enter。
  6. 回到放種子的資料夾選下一個檔案,繼續上述動作。
其他地方的自動化都還蠻好處理的,但其中最麻煩的部分是第4點,這裡用到了判斷字串、計算字串長度以及修改字串的技巧。

另外一個比較麻煩的是第6點,這裡需注意到SetTitleMatchMode的值,因為需要用到包和或用更多條件精準判斷視窗名稱的技巧。另一個是Gosub所在位置,因為很假掰的用了else,結果一開始一直不知道為什麼「Gosub, avmove」沒有辦法被啟用,結果是因為放的位置錯了。(我原本放到avcopy最後的return之前)

所以前前後後可能研究了好幾個小時吧,現在只剩不知道怎麼寫如何選擇想要保留的檔案。(如果大概知道怎麼做得大大也可以分享一下大概可以怎麼做)

但目前的做法已經解決大部分問題,還是蠻有成就感的,來分享一下作法,大家以後如果碰到類似問題可參考。

F8:: ;種子自動貼檔名:啟動
Gosub, avcopy
return

avcopy: ;種子自動貼檔名(查字串中是否有副檔名判斷為單獨檔案或是資料夾)
Send, {F2} ;編輯檔名
sleep, 500
Send, ^{C} ;複製檔名
filename = %clipboard%
Send, {Enter}{Enter} ;開啟種子
sleep, 888
Send, ^{A} ;全選路徑
sleep, 300
Send, ^{C} ;複製路徑
sleep, 300
if clipboard contains .wmv,.mp4,.avi,.mkv,.rmvb,.rm ;如果完整路徑中包含所列副檔名,則判定為只有單一檔案
{
 StringGetPos, pos, clipboard, ., R ;從最右邊開始搜尋點的位置
 StringLen, length, clipboard ;計算字串長度
 npos := length-pos ;長度減掉位置
 StringRight, fileextension, clipboard, npos  ; 把clipboard中名稱去掉檔名丟到變數fileextension
 clipboard = %filename%%fileextension% ;把檔名加上副檔名後丟到剪貼簿
 sleep, 300
 Send, ^{V} ;貼上種子檔名&副檔名內容
 Gosub, avmove
 return
}
else
{
 clipboard = %filename%
 sleep, 300
 Send, ^{V} ;貼上種子名稱
 Gosub, avmove
    return
}
Gosub, avmove
return

avmove: ;種子自動化:確認並移動到下一個種子
SetTitleMatchMode, 2 ;SetTitleMatchMode包含模式
WinWait, 增加新的Torrent ahk_class #32770
sleep, 100
WinWaitClose, 增加新的Torrent ahk_class #32770
sleep, 100
SetTitleMatchMode, 3 ;SetTitleMatchMode準確匹配模式
WinWait, Torrent ahk_class CabinetWClass, 
IfWinNotActive, Torrent ahk_class CabinetWClass, , WinActivate, Torrent ahk_class CabinetWClass, 
WinWaitActive, Torrent ahk_class CabinetWClass, 
Sleep, 100
Send, {Down}
Gosub, avcopy
return

2016年2月17日

Excel:用yahoo api抓股價Excel巨集


之前有用PTT板上大大寫的excel巨集,不過他用的方式是去抓網頁。

缺點是網頁有修改的話版位就走樣。而且如果要讀取的股票數量多的話,速度會很慢。
(那個巨集板上大大也沒有要繼續維護了...可惜)

昨天研究了一下,最後找到了api的這個巨集方法。參考了:
http://kuanming-style.blogspot.tw/2013/02/excelvbayahoo-finance-apis.html
和巨集作者M.Kishinevsky and M. Higgs的檔案:
http://www.pythonclub.org/project/yahoo-data-api


yahoo提供的api應該比較不會有甚麼異動才是,而且抓資料速度快超多。

我改了一個平常在用的Excel範本,提供各位參考:

https://sites.google.com/site/kslman/file/Stock%2Byahoo_sample.xlsm?attredirects=0&d=1

md5:8d17c8b6af281aa7bea464c39ef5acc0


使用說明:

1.打開後記得啟用巨集

2.「即時」分頁中的按鈕「Download Data」點下去,就會把A欄有Symbols的股票更新。

3.「即時」分頁中的「C2」裡的值「l1c1vhgd1rm4n」可以自定義。右邊Yahoo Tag那張圖裡面有說明填入甚麼樣的代碼會回饋甚麼值。不過表頭不會跟著更新,如果有興趣DIY修改的,自己要搞清楚是動到哪一欄。

4.如果要新增要查詢的股票,在「參照」分頁中自行在A、B、C增加編號、名稱和類別,D和E是公式,只要往下拉就可以。然後把得到的Yahoo Symbols貼到「即時」分頁A欄。

5.分頁「關注」和「對帳單sample」就只是兩個範本而已。提供參考如果抓api資訊後,Excel後續可以幫助你做甚麼事情的範本。


如果對巨集有甚麼疑問的話,可以自己打開來看。

內容跟原作者M.Kishinevsky and M. Higgs的內容是一樣的,我只是加上中文註解。

巨集如下。


Sub GetData()

'宣告變數

    Dim QuerySheet As Worksheet

    Dim DataSheet As Worksheet

    Dim qurl As String

    Dim i As Integer

'告訴Excel不要每更新一格就重新計算

    Application.ScreenUpdating = False

    Application.DisplayAlerts = False

    Application.Calculation = xlCalculationManual

'將現在的工作表設為資料表

    Set DataSheet = ActiveSheet

'從第七列開始,只要第一欄(A欄)內容不是空的,就把代碼加到Yahoo Finance API的

網址中

    Range("C7").CurrentRegion.ClearContents

    i = 7

    qurl = "http://download.finance.yahoo.com/d/quotes.csv?s=" + Cells(i, 1)

    i = i + 1

    While Cells(i, 1) <> ""

        qurl = qurl + "+" + Cells(i, 1)

        i = i + 1

    Wend

    qurl = qurl + "&f=" + Range("C2")

'將網址放到C1的欄位中

    Range("c1") = qurl

'抓取資料

QueryQuote:

             With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl,

Destination:=DataSheet.Range("C7"))

                .BackgroundQuery = True

                .TablesOnlyFromHTML = False

                .Refresh BackgroundQuery:=False

                .SaveData = True

            End With

'將CSV的格式塞到Excel的表格當中

            Range("C7").CurrentRegion.TextToColumns Destination:=Range("C7"),

DataType:=xlDelimited, _

                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False,

Tab:=True, _

                Semicolon:=False, Comma:=True, Space:=False, other:=False


'讓Excel重新活回來,讓資料能夠顯示

'turn calculation back on

    Application.Calculation = xlCalculationAutomatic

    Application.DisplayAlerts = True

'    Range("C7:H2000").Select

'    Selection.Sort Key1:=Range("C8"), Order1:=xlAscending, Header:=xlGuess, _

'        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

    Columns("C:C").ColumnWidth = 12

    Columns("J:J").ColumnWidth = 25.43

    Range("h2").Select


End Sub




PS:
原作者網誌中也有附上完整的api代碼說明
http://www.pythonclub.org/project/yahoo-data-api

不過有些代碼就算抓出來,並對照它的英文敘述我也還是看不懂是甚麼。

如知道代碼意思且有興趣幫忙解釋的大大,可在下面推文,我有空會持續完善這張表。


目前我已知代碼解釋如下。

d1      Last Trade Date          最後交易日期
l1      Last Trade (Price Only)  成交價
c1      Change                   漲跌(值)
c       Change & Percent Change  漲跌值與百分比
v       Volume                   成交量(這裡顯示股數非張數)
h       Day's High               當天最高價
g       Day's Low                當天最低價
r       P/E Ratio                本益比
n       Name                     股票英文名稱


--
上文同步有貼在 PTT Stock 板。

其他參考資訊:
http://lovecoding.logdown.com/posts/257928-use-yahoo-api-to-obtain-historical-stock-price-data

2016年1月25日

Excel:開啟Excel自動開啟額外視窗







Windows 7下的方法

1、打開REGEDIT

2、在HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open目錄下,只保留以下內容:
[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open]
@=”打開舊檔(&O)”

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command]
@=”C:\Program Files\Microsoft Office\Office11\EXCEL.EXE” /e

預設值變更為:
"C:\Program Files (x86)\Microsoft Office\OFFICE11\EXCEL.EXE" /e "%1"

3、刪除ddeexec這個目錄和command下的那個command的鍵值。


其中Excel.Sheet.8為xls檔、Excel.Sheet.12為xlsx檔。

而路徑中:
Office11表示是Office2003
Office12表示是Office2007
Office14表示是Office2010

不過我看到的鍵值是:
"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" /dde

如果是改為:
"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" /dde "%1"
也可以正常執行,參數應該是都吃的。


參考資料:
http://blog.xuite.net/lidj37/twblog/179517401-%E9%96%8B%E5%95%9F%E5%A4%9A%E5%80%8B%E7%8D%A8%E7%AB%8BExcel++xp%2Fwin7
http://blog.darkthread.net/post-2013-07-15-open-excel-side-by-side.aspx