返回列表 上一主題 發帖

[發問] ★(發問)一個資料欄位不對稱的資料篩選問題

[發問] ★(發問)一個資料欄位不對稱的資料篩選問題

本帖最後由 yagami12th 於 2012-1-5 12:23 編輯

請教一下大家,昨天晚上在思考一個資料處理的問題,問題如下:

附檔 2010年近月選擇權.rar (249.22 KB)

以下為2010/1月契約資料,以工作表1為例 :                                            (註解:工作表1代表2010/1月,工作表2代表2010/2月,以此類推)

從a2儲存格到a37儲存格為2009/12月17日的"買權"和"賣權"各履約價資料,
從a38儲存格到a73儲存格為2009/12月18日的"買權"和"賣權"各履約價資料,
以此類推 ..
到2010/1/20(註解:未沖銷契約數為未平倉量,買權有買權的未平倉量,賣權有賣權的未平倉量)
(檔案編排一直排不好,sorry,以觀察未沖銷契約數那欄為主)
----------------------------------------------------------------------------------
交易日期             契約        交割月份        履約價        買賣權        開盤價        最高價        最低價        收盤價        成交量        結算價        未沖銷契約數       
2009/12/17        TXO        201001        6900        買權        830        895        805        805        45                 820                                                         176       
2009/12/17        TXO        201001        6900        賣權        16        20        12.5        19.5        7294                 19.5                                                         24820       
2009/12/17        TXO        201001        7000        買權        750        775        720        720        11                 725                                                         85       
2009/12/17        TXO        201001        7000        賣權        20        28        17.5        27        4631                  27                                                         20925       
2009/12/17        TXO        201001        7100        買權        700        700        630        630        2                 630                                                         132       
2009/12/17        TXO        201001        7100        賣權        33        38        23        36.5        5276                  36.5                                                         11340
...
...
2010/1/20
-----------------------------------------------------------------------------------------------------------------------------------------------------
excel相關的涵數有max,min,large,small。找最大用max,找第二或第三大用large


因為 每一天的買權有36檔,賣權也是36檔,
所以先新增一個excel檔案為"2010最大oi",新增12個sheet(因為是12個月),因為有各個不同的履約價,要找出"每一天"的未平倉量最大值是落在哪一個履約價
,以上述的例子為(2010/1月契約)就將找到的資料往2010最大oi.xlsx裡的sheet1貼上(說明:因為在同個excel新增sheet會變的太多,雖然新增sheet比較好寫,)

所以會最後成果會變成:
(在12/17的各檔履約價的買權有36筆)>但對應算出的最大未沖銷契約數], "(註:最大未沖銷契約數又稱最大未平倉量)落在這36筆的哪一檔履約價"如12/17是落在8400的履約價",未平倉量為23299(為最大), 第二大未平倉量的履約價落在 8000的履約價,未平倉量為 21482(第二大)

另外各檔履約價的賣權也有36筆>>也會算出一個最大未沖銷契約數]"是落在哪一檔履約價,與上述的買權說明類似。
---------------------------------------------------
表格格式為:買權為例(以最大值為例)
日期         買權最大未倉量             買權最大未平倉量落在哪個履約價-
12/17       23299                              8400------
12/18       25593                              8400------
12/21      26094                             8400------
..
..
---------------------------------------------------
表格格式為:賣權為例(以最大值為例)
日期         賣權最大未倉量             賣權最大未平倉量落在哪個履約價-
12/17       24820                             6900------
12/18       25593                             6900------
12/21      26450                              6900------
----------------------------------------------------
完成的表格格式為 最後合併:

日期         買權最大未倉量             買權最大未平倉量落在哪個履約價-          賣權最大未倉量             賣權最大未平倉量落在哪個履約價-
12/17       23299                              8400------                                                         24820                             6900------
12/18       25593                              8400------
12/21      26094                             8400------                                                          26450                             6900------

  最後會畫成這樣的圖:http://2330.tw/Option_Master.aspx

上面例子是剛好買權最大未平倉量履約價一直在"8400",常常會有7500跳到7800,又跳到8000的狀況。蠻有趣的一個現象
大概是這樣,不知道我說明的清不清楚..我也還在找處理這個問題的資訊,這個範例能學會應該也能功力大增,謝謝各位。

回復 1# yagami12th
  1. Option Explicit
  2. Sub Ex()
  3.     Dim E As Worksheet, i As Date, M As Variant, AR(), C As Variant
  4.     ReDim AR(1 To 5, 1 To 1)                               '第一維 有5個元素 ,第二維 有1個元素
  5.     AR(1, 1) = "日期"
  6.     AR(2, 1) = "買權 最大未倉量"
  7.     AR(3, 1) = "買權 最大未平倉量落在哪個履約價"
  8.     AR(4, 1) = "賣權 最大未倉量"
  9.     AR(5, 1) = "賣權 最大未平倉量落在哪個履約價-"
  10.     Application.ScreenUpdating = False
  11.     For Each E In Sheets                                     '工作表1,工作表2,工作表3
  12.        If E.FilterMode Then E.AutoFilterMode = False         '有篩選時 取消[篩選]
  13.         For i = E.[A2] To E.[A2].End(xlDown)                 '日期[A2]直到最後的日期
  14.             E.AutoFilterMode = False
  15.             E.Range("A1").AutoFilter 1, i
  16.             If E.Range("A1").End(xlDown).Row <> Rows.Count Then   '因中間有沒交易日期[篩選]不到資料
  17.                 ReDim Preserve AR(1 To 5, 1 To UBound(AR, 2) + 1) '第二維 原有元素再加1元素
  18.                 AR(1, UBound(AR, 2)) = i                          '日期: i
  19.                 For Each C In Array("買權", "賣權")
  20.                     E.AutoFilterMode = False
  21.                     E.Range("A1").AutoFilter 1, i
  22.                     E.Range("A1").AutoFilter 5, C
  23.                     M = Application.Max(E.Range("L:L").SpecialCells(xlCellTypeVisible))
  24.                     AR(IIf(C = "買權", 2, 4), UBound(AR, 2)) = M              '最大未倉量
  25.                       'IIf(C = "買權", 2, 4)     C = "買權"->2  ,C <> "買權"-> 4
  26.                     Set M = E.Range("L:L").SpecialCells(xlCellTypeVisible).Find(M, LookIn:=xlValues)
  27.                     AR(IIf(C = "買權", 3, 5), UBound(AR, 2)) = M.Offset(, -8) '最大未平倉量落在哪個履約價
  28.                 Next
  29.             End If
  30.         Next
  31.     Next
  32.     With Sheets.Add(Sheets(1))    '新增工作表
  33.         .[A1].Resize(UBound(AR, 2), UBound(AR)) = Application.WorksheetFunction.Transpose(AR)
  34.         .Cells.EntireColumn.AutoFit
  35.     End With
  36.     Application.ScreenUpdating = True
  37. End Sub
複製代碼

TOP

回履 GBKEE大:謝謝,我有試了程式碼,但出現以下問題:

13.                   For i = E.[A2] To E.[A2].End(xlDown)                 '日期[A2]直到最後的日期

執行到上面這行,跳出視窗顯示:
出現執行階段錯誤 '16':
運算式太過複雜

TOP

回復 3# yagami12th
出現執行階段錯誤 '16':  運算式太過複雜     當真如此
2003正常  請將你的上傳看看

TOP

本帖最後由 yagami12th 於 2012-1-5 20:53 編輯

麻煩GBKEE大了,謝謝。我是2010版本的,我記得附檔裡的sheet只放一月,二月,三月,意思為= 工作表1到3,是沒有將工作表1到12全放上去 。

電腦配備也還可以,應該是不會有問題才對,蠻少見的感覺。

以下為附檔,code放在module1:

problem2010年近月選擇權.rar (249.14 KB)

TOP

回復 5# yagami12th
以下為附檔,code放在module1:
附檔沒有module1 也沒code
我2003 已更新可處裡2007檔案 並沒錯誤發生

TOP

本帖最後由 yagami12th 於 2012-1-5 21:21 編輯

GBKEE大,我重新試了一下,還是一樣,附檔我再三檢查了,剛剛沒注意到,抱歉。

附檔:(excel)
2011年近月選擇權.rar (644.44 KB)

TOP

因為兩張圖的容量太大,我再另外傳圖的部份比較詳細。

圖的附檔為:
偵錯抓圖1.rar (383.03 KB)
偵錯抓圖2.rar (493.28 KB)

TOP

本帖最後由 GBKEE 於 2012-1-5 21:42 編輯

回復 8# yagami12th
錯誤原因: 工作表3 第一列是空白列   請修正 為同其他工作表 是欄位名稱
圖片檔案太大??  按 (抓畫面鍵)  Print Screen Sys Rq   小畫家 編輯  (存 gif 檔案不會太大)

TOP

真的耶,謝謝,我真是個蠢d,因為我桌面上好幾個2011的選擇權,我剛好點到那個有空白列的去tray。我再試一次。

TOP

        靜思自在 : 欣賞別人就是莊嚴自己。
返回列表 上一主題