- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
2#
發表於 2012-1-8 13:13
| 只看該作者
本帖最後由 GBKEE 於 2012-1-8 13:16 編輯
回復 1# yagami12th
-> 用你這裡發文的檔案 執行此程式- Const ThePath = "d:\You\" '指定存放的主資料夾
- Sub Ex()
- Dim d As Object, SavePath As String, Sh As Worksheet, R As Variant, E As Variant, Newbook As Workbook
- Dim MonPath As String, 選擇權 As String, 履約價 As String
- Application.DisplayAlerts = False '停止系統 的提示
- Application.ScreenUpdating = False '停止螢幕更新功能
- Set d = CreateObject("scripting.Dictionary") '建立字典物件
- SavePath = Dir(ThePath, 16) '傳回指定存放的主資料夾
- If SavePath = "" Then MkDir (ThePath) '如主資料夾不存在 建立它
- For Each Sh In Sheets
- d.RemoveAll '字典物件 清空子物件
- With Sh '依序處裡 每一工作表
- For Each R In .Range(.[D2], .[D2].End(xlDown)) '每一工作表中在d欄
- d(R.Value) = "" '字典物件 設立子物件(履約價)
- Next
- MonPath = Mid(.[c2], 1, 4) & "_" & Mid(.[c2], 5) '月資料夾
- SavePath = Dir(ThePath & MonPath, 16) '尋找月資料夾
- If SavePath = "" Then MkDir (ThePath & MonPath) '如月資料夾不存在 建立它
- For Each E In Array("買權", "賣權") '依選擇權
- 選擇權 = "\" & MonPath & IIf(E = "買權", "_C\", "_P\") '月資料夾\選擇權資料夾
- SavePath = Dir(ThePath & MonPath & 選擇權, 16)
- If SavePath = "" Then MkDir (ThePath & MonPath & 選擇權)
- For Each R In d.KEYS '字典物件 依序處裡子物件 R (履約價)
- .AutoFilterMode = False '工作表中取消自動篩選
- .Range("A1").AutoFilter Field:=4, Criteria1:=R
- .Range("A1").AutoFilter Field:=5, Criteria1:=E
- 'AutoFilter 方法[自動篩選] 篩選出一個清單。
- 'Field:=4 第4欄 (履約價) ,Criteria1:=R 準則=R (履約價)
- 'Field:=5 第5欄 (選擇權) ,Criteria1:=E 準則=E (選擇權)
- 履約價 = Mid(.[c2], 1, 4) & "_" & Mid(.[c2], 5) & "_" & R & IIf(E = "買權", "_C", "_P")
- SavePath = ThePath & MonPath & 選擇權 & 履約價 '存檔的完整路徑名稱
- Set Newbook = Workbooks.Add(1) '新開檔案(1頁)
- .UsedRange.SpecialCells(xlCellTypeConstants).Copy Newbook.Sheets(1).[a1]
- '自動篩選的資料 複製到新開檔案第1頁的.[a1]
- With Newbook.Sheets(1)
- .[O1] = "高價減低價"
- .[P1] = "成交量變化"
- With .[O2].Resize(.UsedRange.Columns(1).Rows.Count - 1) '在這範圍
- .Cells = "=RC[-8]-RC[-7]" '然後在O2欄位=g2-h2: 制訂公式
- .Value = .Value '取值 -> 消除公式
- End With
- With .[P3].Resize(.UsedRange.Columns(1).Rows.Count - 2)
- .Cells = "=RC[-6]-R[-1]C[-6]" '在p3格位輸入公式=j3-j2
- .Value = .Value
- End With
- End With
- Newbook.Close True, SavePath '新開檔案關閉 存檔
- Next
- Next
- .AutoFilterMode = False '離開工作表恢復原狀
- End With
- Next
- Application.DisplayAlerts = True '恢復系統的提示
- Application.ScreenUpdating = True '螢幕更新功能是開啟的則為 True。
- MsgBox "工作完成"
- End Sub
複製代碼 |
|