KSL`s Base

##title##

2018年5月27日

USB 安裝 Windows10 & Setting

Windows 10安裝到usb微軟提供的工具就很簡單易用,就不贅述了:
https://www.microsoft.com/zh-tw/software-download/windows10


Winsows10 Setting

1. Windows 10-進入檔案總管時直接顯示本機頁面並且不顯示快速存取內容
http://isvincent.pixnet.net/blog/post/47514048-windows-10-%E9%80%B2%E5%85%A5%E6%AA%94%E6%A1%88%E7%B8%BD%E7%AE%A1%E6%99%82%E7%9B%B4%E6%8E%A5%E9%A1%AF%E7%A4%BA%E6%9C%AC%E6%A9%9F%E9%A0%81%E9%9D%A2%E4%B8%A6


2. 開機時自動啟用數字鍵
修改註冊檔 Win+R輸入regedit開啟登陸編輯器 找到
\HKEY_USERS\.DEFAULT\Control Panel\Keyboard
or
將InitialKeyboardIndicators修改為80000002 重開機即可
重新開機後再登入畫面先開啟NumLock,不登入直接再重開機一次即可


3. 打開「啟動」資料夾
按下Win+R 輸入 shell:startup或shell:Common Startup,按Enter打開啓動資料夾
ahk腳本無法動執行的話,轉譯為exe,並設定為以windiws7相容性執行即可

4. Autohotkey腳本無效
autohotkey要勾用系統管理員身分執行,部分腳本才能正常執行。(例如偵測某些視窗)
但如果轉譯的exe勾系統管理員身分執行,就無法在開機時自動啟動,所以要:

  • 開機腳本編譯的exe→勾以windiws7相容性執行
  • autohotkey→勾以系統管理員身分執行


5. 開機自動登入
cmd → netplwiz
or
cmd → control userpasswords2 取消勾選「必須輸入使用者名稱和密碼,才能使用這台電腦」


6. 關閉 Windows Defender 功能
登錄檔修改方法:
位置:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender
項目:DisableAntiSpyware
DWORD 數值改為:十六進位的 1

7. 自動喚醒電腦關閉
控制台\系統及安全性\安全性與維護\自動維護
將允許自動維護喚醒電腦關閉
or
控制台→電源選項→變更進階電源設定→睡眠→允許喚醒計時器→停用
or
網路連線→以太網路→電源管理
將允許這個裝置喚醒電腦關閉(上次重灌是這個關閉後才不會自動開機)

2018年4月2日

致,十年前的我

Hi,十年前的我。


2008年3月,是你第一次踏進遊戲業。

還記得當時你矇懞懂懂的樣子,什麼也不會,什麼也沒有。


但你給自己的第一個目標,是在喜歡的產業裡工作,能全力以赴。

你給自己的第二個目標,現在想想,都還是挺難的。


所以,你會吃上苦頭。

所以,你會微不足道、會充滿壓力、會痛苦、會跌倒。

所以,會有人笑話你、會有人看輕你、會有人討厭你。


但人生不就是走一趟悲歡離合、喜怒哀樂嗎?

請持續走下去。


你的人生大學從來不乏導師。

你該感謝能親眼見識什麼叫用盡全力;

感謝能體悟什麼叫智慧;

感謝有人願意教訓你;

感謝一路走來所有長官、夥伴、前輩、朋友、兄弟,甚至和你沒有關係的人。

他們都是你的導師。


期許你在這條路上,持續前進。

2018年3月22日

寫了一個公司系統的自動化外掛,突破了幾個功能。


  1. 實現用Chrome讀取條顏色判斷時間
  2. 用Chrome搜尋文字功能來定位座標
  3. UI介面,文字顯示進度與花費時間
  4. 計算預期完成時間
  5. 圖像化進度條顯示進度
  6. 自動輸出可節省的動作和時間純文字日誌


雖然有些功能是該工具介面限定,但有些概念還是共通,在此紀錄一下。
F12::
V_PluginName = 權限管理外掛
V_Version = v6.3
V_Game = AAA, BBB ;遊戲
V_Name = Aaron, Claire, Jacky ; 名字
V_Function = 功能1, 功能2 ; 功能名稱
V_StartTime = %A_Now% ;紀錄開始時間
CoordMode ,Pixel, Screen ;設置座標模式相對於桌面 (整個屏幕)
CoordMode ,Mouse, Screen ;設置滑鼠座標模式相對於桌面 (整個屏幕)
BlockInput ,Mouse
WinWait, 9sPlay - Google Chrome, 
IfWinNotActive, 9sPlay - Google Chrome, , WinActivate, 9sPlay - Google Chrome, 
WinWaitActive, 9sPlay - Google Chrome, 
Loop, Parse, V_Game, `, ;用 "," 解析 V_Game 字串並計算切割後的字串數量
 {
 V_GameNum =%A_Index%
 }
Loop, Parse, V_Name, `, ;用 "," 解析 V_Name 字串並計算切割後的字串數量
 {
 V_NameNum =%A_Index%
 }
Loop, Parse, V_Function, `, ;用 "," 解析 V_Function 字串並計算切割後的字串數量
 {
 V_FunctionNum =%A_Index%
 }
V_ActionNum := V_GameNum*(V_NameNum+V_FunctionNum) ;計算動作數量
Gui, Color, White ;GUI顏色設定為白色
Gui, Add, Text, W600, 新增項目:%V_Game%`r`n`r`n人員:%V_Name%`r`n`r`n功能:%V_Function%`r`n ;新增本次工作內容文字
Gui, Add, Progress, vV_MyProgress w600 ;新增進度條至變量 V_MyProgress (在字母 V 後指定一個變量名, 此變量將為全局變量)
Gui, Add, Text, vV_MyText W600 Right  ;新增文字至變量 V_MyText (在字母 V 後指定一個變量名, 此變量將為全局變量)
Gui +Resize +MaxSize640x480 +AlwaysOnTop -SysMenu ;GUI設定尺寸、保持最上層、去掉系統選單
Gui, Show, X-900 Y300 NoActivate, %V_PluginName% %V_Version% ;NoActivate 讓當前活動窗口繼續保持活動狀態
Loop, Parse, V_Game, `, ;用 "," 解析 V_Game 字串並執行本次工作內容
 {
 V_CurrentTime = %A_Now% ;紀錄當前時間
 EnvSub, V_CurrentTime, %V_StartTime%, S ;以秒計算總共花了多少時間,並更新至 V_CurrentTime
 V_EstimateTime := (V_CurrentTime//(A_Index)-1)*V_GameNum ;預測時間公式:(當前時間 V_CurrentTime//第 A_Index 個項目-1)*V_GameNum. (//)表示為向下捨除
 V_ProgressPercentage := (A_Index/V_GameNum)*100 ;進度百分比公式:(A_Index 當前進度數/V_GameNum 總遊戲數)*100
 GuiControl,, V_MyProgress, %V_ProgressPercentage% ;更新進度條
  if A_Index <= 1
  {
  GuiControl,, V_MyText, 目前執行到第%A_Index%/%V_GameNum%個項目"%A_LoopField%",已使用時間計算中,預期時間計算中 ;更新進度文字至變量 V_MyText
  Gosub, L_AutoAction ;開權限主要動作
  }
 else
  {
  GuiControl,, V_MyText, 目前執行到第%A_Index%/%V_GameNum%個項目"%A_LoopField%",已使用%V_CurrentTime%秒,預期使用%V_EstimateTime%秒 ;更新進度文字
  Gosub, L_AutoAction ;開權限主要動作
  }
 }
V_CurrentTime = %A_Now% ;紀錄結束時間
EnvSub, V_CurrentTime, %V_StartTime%, S ;計算總共花了多少時間
MsgBox, 262144, %V_PluginName% %V_Version%, 新增項目:%V_Game%`r`n`r`n人員:%V_Name%`r`n`r`n功能:%V_Function%`r`n`r`n太棒了!你又節省了%V_CurrentTime%秒!
Gui,Destroy
FileAppend, %A_YYYY%/%A_MM%/%A_DD% %A_Hour%:%A_Min%:%A_Sec%`, %V_Version% save action`,%V_ActionNum% `, and time(second)`, %V_CurrentTime%`n, %A_ScriptDir%\9SplayBackgroundPluginLog.txt ;輸出日誌
Run, %A_ScriptDir%\9SplayBackgroundPluginLog.txt ;開啟日誌
Return

L_SaveFind1: ;搜尋字串後尋找搜尋色塊
OldClip = %Clipboard% ;把目前的剪貼簿內容先存起來
Clipboard = %A_LoopField% ;將字串替換至剪貼簿
Sleep, 300
send, ^f ;搜尋字串
Sleep, 300
send, ^v ;貼上複製內容
Sleep, 700
PixelSearch, V_ColorCoordinateX, V_ColorCoordinateY, -746, -897, -36, 300, 0x3296FF, 3, Fast ;尋找搜尋色塊
Return

L_SaveFind2: ;點擊座標修正後的勾選框
Sleep, 300
mousemove,  %V_NewColorCoordinateX%, %V_NewColorCoordinateY%
Mouseclick, Left, %V_NewColorCoordinateX%, %V_NewColorCoordinateY% ;點擊座標修正後的勾選框
Sleep, 300
Clipboard = %OldClip% ;恢復先前剪貼簿內容
Return

L_AutoAction: ;開權限主要動作
Mouseclick, Left,  -924,  -871, , 1 ;點項目選單
Sleep, 300
Send, %A_LoopField%{ENTER}
Sleep, 700
Loop ;判斷讀取條是否還在
 {
 PixelSearch, V_ColorCoordinateX, V_ColorCoordinateY, -999, 710, -989, 715, 0xFFFFFF, 3, Fast ;搜尋白色底色
 if ErrorLevel ;如果讀取條還在
  {
  Sleep, 300
  }
 else
  {
  Loop, Parse, V_Name, `, ;用 "," 解析 V_Name 字串後搜尋,並點擊座標修正後的勾選框
   {
   Gosub L_SaveFind1
   V_NewColorCoordinateX := V_ColorCoordinateX-62 ;名字座標修正
   V_NewColorCoordinateY := V_ColorCoordinateY+5 ;名字座標修正
   Gosub L_SaveFind2
   }
  Loop, Parse, V_Function, `, ;用 "," 解析 V_Function 字字串後搜尋,並點擊座標修正後的勾選框
   {
   Gosub L_SaveFind1
   V_NewColorCoordinateX := V_ColorCoordinateX-42 ;功能座標修正
   V_NewColorCoordinateY := V_ColorCoordinateY+5 ;功能座標修正
   Gosub L_SaveFind2
   }
  PixelSearch, V_ColorCoordinateX, V_ColorCoordinateY, -746, -897, -36, 300, 0xDEC05B, 3, Fast ;搜尋確定更改
  V_NewColorCoordinateX := V_ColorCoordinateX+25 ;確定更改座標修正
  V_NewColorCoordinateY := V_ColorCoordinateY+10 ;確定更改座標修正
  Sleep, 300
  Mouseclick, Left, %V_NewColorCoordinateX%,%V_NewColorCoordinateY% ;點確定更改
  Break
  }
 }
Loop ;判斷修正完成蓋台還沒出現
 {
 PixelSearch, V_ColorCoordinateX, V_ColorCoordinateY, -999, 710, -989, 715, 0x7F7F7F, 3, Fast ;搜尋灰色蓋台色
 if ErrorLevel ;如果修正完成蓋台還沒出現
  {
  Sleep, 300
  }
 else
  {
  Mouseclick, Left, -924,  -855, , 3 ;把蓋台按掉
  Sleep, 1000
  Break
  }
 }
Return

2017年11月24日

Excal:VBA,插入股票公開資料v1.3

插入股票公開資料的檔案我做了更新,供大家參考:
stock_sample_v1.3.xlsm
https://drive.google.com/open?id=1g5saowjYAeXNi73a0pss96-xZeXPUTXr

使用方式:
1. 「關注」的分頁C列填入股票代碼。
2.  點擊「關注」分頁左上「refresh」按鈕就可以刷新全部。
(判斷方式是16:00以前只刷新興櫃,16:00以後則全部更新。如果想假日更新最新的前一交易日,可以改TWN分頁的A10~A12)

調整內容:
1. 新增更新全部分頁的方式
2. 修正了櫃買中心的興櫃csv連結為:http://www.gretai.org.tw/storage/emgstk/ch/new.csv

目前問題:
1. 興櫃股票我抓的政府資料開放平臺的資料沒有前一天價格,所以沒有辦法算漲跌、漲跌幅和昨收。(如果有人知道哪邊抓的資料有漲跌或前一天價格可以跟我說一下)
2. P/E只有上市有。
3. 美股不知道哪邊有資料,有人知道那邊有美股類似證交所這樣一個表有全部股價資料的網站嗎?

新增的巨集內容如下。
Private Sub CommandButton1_Click()

Sheets("TWN").Select
'宣告變數
    Dim QuerySheet As Worksheet
    Dim DataSheet As Worksheet
    Dim qurl As String
    Dim NOW, BN, LTH As Long
    NOW = Sheets("TWN").Range("A4")
    BN = Sheets("TWN").Range("A9")
    LTH = Sheets("TWN").Range("A8")
'告訴Excel不要每更新一格就重新計算
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
    Set DataSheet = ActiveSheet
    qurl = "http://www.gretai.org.tw/storage/emgstk/ch/new.csv"
'選擇TWN sheet
    Sheets("TWN").Range("B:Z").Clear
        
If NOW >= BN Then
    If LTH < 16 Then
'如果時間是16:00之前
'抓取資料(TWN sheet)
QueryQuote:
             With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("B1"))
                .BackgroundQuery = True
                .TablesOnlyFromHTML = False
                .Refresh BackgroundQuery:=False
                .SaveData = True
                .RefreshStyle = xlInsertEntireRows
                .Delete
            End With

'讓Excel重新活回來,讓資料能夠顯示
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
'切數據(TWN sheet)
        Sheets("TWN").Columns("B:B").Select
    Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True

'否則(如果時間是16:00之後)
Else


'抓取資料(TWN sheet)
QueryQuote2:
             With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("B1"))
                .BackgroundQuery = True
                .TablesOnlyFromHTML = False
                .Refresh BackgroundQuery:=False
                .SaveData = True
                .RefreshStyle = xlInsertEntireRows
                .Delete
            End With

'讓Excel重新活回來,讓資料能夠顯示
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
'切數據(TWN sheet)
        Sheets("TWN").Columns("B:B").Select
    Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True
'更新上一交易日(TWN sheet的BN變數)
        Sheets("TWN").Range("A4:A7").Select
        Selection.Copy
        Sheets("TWN").Range("A9").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

'選擇TWO sheet
Sheets("TWO").Select

'告訴Excel不要每更新一格就重新計算
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
        qurl = "http://www.tpex.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430_print.php?l=zh-tw&d=" + Sheets("TWO").Range("A9") + "/" + Sheets("TWO").Range("A10") + "/" + Sheets("TWO").Range("A11") + "&se=EW&s=0,asc,0"
    Sheets("TWO").Range("B:Z").Clear
'抓取資料(TWO)
QueryQuote3:
             With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=Sheets("TWO").Range("B1"))
                .BackgroundQuery = True
                .TablesOnlyFromHTML = False
                .Refresh BackgroundQuery:=False
                .SaveData = True
                .RefreshStyle = xlInsertEntireRows
                .Delete
            End With
  
'讓Excel重新活回來,讓資料能夠顯示
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True

'選擇TW sheet
Sheets("TW").Select

'將現在的工作表設為資料表
    Set DataSheet = ActiveSheet
    qurl = "http://www.tse.com.tw/exchangeReport/MI_INDEX?response=csv&date=" + Sheets("TW").Range("A9") + Sheets("TW").Range("A10") + Sheets("TW").Range("A11") + "&type=ALLBUT0999"
    Sheets("TW").Range("B:Z").Clear
'抓取資料(TW sheet)
QueryQuote4:
             With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("B1"))
                .BackgroundQuery = True
                .TablesOnlyFromHTML = False
                .Refresh BackgroundQuery:=False
                .SaveData = True
                .RefreshStyle = xlInsertEntireRows
                .Delete
            End With

'讓Excel重新活回來,讓資料能夠顯示
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
'切數據(TW sheet)
        Sheets("TW").Columns("B:B").Select
    Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True
        
        End If
End If

'選擇關注 sheet
Sheets("關注").Select

End Sub

2017年11月7日

Excal:VBA,插入股票公開資料

google試算表跑資料很慢,而且抓不到上櫃和興櫃資料。

而且如果要跟我原本電腦裡的資料連結還要下載下來。

因為有用Excel做紀錄的習慣,所以還是直接匯在Excel的檔案裏面比較方便。


研究了幾天,把之前yahoo那個VBA,改成抓證交所、櫃買中心、政府資料開放平臺的方案,供大家參考:
https://drive.google.com/open?id=1Ekn1MIGolNi3bqoH-xfv16mD9Z_D0OoF

(政府開放平台的興櫃資料我是查到這個:https://data.gov.tw/dataset/11398
因為我不知道怎麼解析櫃買中心的興櫃csv下載連結,有人知道的話可以跟我說下)

使用方式:
1. 「關注」的分頁C列填入股票代碼。
2.  點擊「TW」、「TWO」、「TWN」各分頁左上「refresh」按鈕就可以刷新。

目前問題:
1. 興櫃股票我抓的政府資料開放平臺的資料沒有前一天價格,所以沒有辦法算漲跌、漲跌幅和昨收。(如果有人知道哪邊抓的資料有漲跌或前一天價格可以跟我說一下)
2. P/E只有上市有。
3. 目前我只會每個分頁各自加一個按鈕,但我不知道怎麼樣做可以一個按鈕直接刷新三個分頁,如果有人知道怎麼做可以教我一下,我可以調整一下。
4. 美股不知道哪邊有資料,有人知道那邊有美股類似證交所這樣一個表有全部股價資料的網站嗎?
5. 我不知道要怎麼判斷最近交易日,所以如果假日用會沒資料。
(暫時先找了一個土炮的方法,目前的連結已經先更新)


巨集內容如下。

抓上市股票:

Private Sub CommandButton1_Click()

'宣告變數
    Dim QuerySheet As Worksheet
    Dim DataSheet As Worksheet
    Dim qurl As String
'告訴Excel不要每更新一格就重新計算
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
    Set DataSheet = ActiveSheet
    qurl = "http://www.tse.com.tw/exchangeReport/MI_INDEX?response=csv&date=" + Range("A9") + Range("A10") + Range("A11") + "&type=ALLBUT0999"
    Range("B:Z").Clear
'抓取資料
QueryQuote:
             With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("B1"))
                .BackgroundQuery = True
                .TablesOnlyFromHTML = False
                .Refresh BackgroundQuery:=False
                .SaveData = True
                .RefreshStyle = xlInsertEntireRows
                .Delete
            End With

'讓Excel重新活回來,讓資料能夠顯示
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
'切數據
        Columns("B:B").Select
    Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True
End Sub

抓上櫃股票:
Private Sub CommandButton1_Click()

'宣告變數
    Dim QuerySheet As Worksheet
    Dim DataSheet As Worksheet
    Dim qurl As String
'告訴Excel不要每更新一格就重新計算
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
    Set DataSheet = ActiveSheet
    qurl = "http://www.tpex.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430_print.php?l=zh-tw&d=" + Range("A9") + "/" + Range("A10") + "/" + Range("A11") + "&se=EW&s=0,asc,0"
    Range("B:Z").Clear
'抓取資料
QueryQuote:
             With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("B1"))
                .BackgroundQuery = True
                .TablesOnlyFromHTML = False
                .Refresh BackgroundQuery:=False
                .SaveData = True
                .RefreshStyle = xlInsertEntireRows
                .Delete
            End With
  
'讓Excel重新活回來,讓資料能夠顯示
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
End Sub

抓興櫃股票:
Private Sub CommandButton1_Click()
'宣告變數
    Dim QuerySheet As Worksheet
    Dim DataSheet As Worksheet
    Dim qurl As String
'告訴Excel不要每更新一格就重新計算
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
    Set DataSheet = ActiveSheet
    qurl = "http://www.gretai.org.tw/storage/emgstk/ch/new.csv"
    Range("B:Z").Clear
'抓取資料
QueryQuote:
             With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("B1"))
                .BackgroundQuery = True
                .TablesOnlyFromHTML = False
                .Refresh BackgroundQuery:=False
                .SaveData = True
                .RefreshStyle = xlInsertEntireRows
                .Delete
            End With

'讓Excel重新活回來,讓資料能夠顯示
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
'切數據
        Columns("B:B").Select
    Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True
End Sub


2017年11月2日

Excel:樞紐分析表,資料分組

用樞紐分析表快速把資料分組的方式。

例如把1~5000,5001~10000,10001~15000....每個區間的人數,快速統計出來。

方式如下:
 





2017年8月30日

Excel:VBA,將函數回傳值改為變數

Sub addlog()
'
' addlog 巨集
' 自動貼即時
'
' 快速鍵: Ctrl+Shift+A
'
    Rows("3:3").Select
    Selection.Copy
    Dim x As Long
    x = Evaluate("=counta(A:A)")
'用Evaluate回傳=counta(A:A)的結果,並將值定義為變數x,在此處為3
    y = x + 2
    Rows(y & ":" & y).Select
'選擇第5行(3+2=5)
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
研究半天,人生第一個自己寫成功的VBA。

2017年8月14日

Excel:巢狀函數將字串強制回傳為數值

搜尋值的資料型態必須與表格資料型態相同才能正確比對。

像是LEFT、MID等函數得到的是字串型態,所以加上--強制轉成數值,才能與表格中的資料型態一致。


例如原本這樣的函數公式會回傳錯誤值「#N/A」:

=VLOOKUP(MID(A1,SEARCH("(",A1)+1,4),C:D,2,0)



但如果加上「--」就可以正確回傳:

=VLOOKUP(--MID(A1,SEARCH("(",A1)+1,4),C:D,2,0)