返回列表 上一主題 發帖

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

回GBKEE大:我剛改了sheets3的第一列格式與其他sheets一致,但還是跳一樣的錯誤。

我先把資料寄出,用小電腦開2003版本試看看,等一下我會回來編輯文章。

TOP

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

回復 11# yagami12th
For Each E In Sheets                                     '工作表1,工作表2,工作表3
       If E.FilterMode Then E.AutoFilterMode = False         '有篩選時 取消[篩選]
       Debug.Print E.Name                                '看錯誤是那一工作表
For i = E.[A2] To E.[A2].End(xlDown)                 '日期[A2]到 To E.[A2].End(xlDown) 必須是日期         
      E.AutoFilterMode = False


如圖 : 有錯誤時 打開 [ 即時運算 ] 視窗 查看是那一個工作表出錯


TOP

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

回GBKEE大
請教GBKEE大,錯在第一個工作表,日期資料都正常。如果把新增sheets的方式,改成開全新的excel檔,分12個sheets去貼篩選好的資料,這樣會不會比較ok



剛試著把工作表刪到只剩工作表1,試好幾次跟不同電腦,跳出的錯誤還是一模一樣,不知道方不方便拜託GBKEE大的檔案上傳。

先謝謝了。

另外,小電腦有灌matlab link excel 所以要花時間開一下,才這麼久。
我用小電腦並檢查欄位都有一致,還是跳出一模一樣的錯誤,會不會是要重新複製,貼上數值格式才能順利運行。,會不會是要重新複製,貼上數值格式才能順利運行。

TOP

本帖最後由 GBKEE 於 2012-1-6 08:55 編輯

回復 13# yagami12th
7#檔案(須刪除工作表3 第一列) 測試 ok ,你試試看.  如不行試試 修改的程式碼
  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 ActiveWorkbook.Sheets                     '作用中的活頁簿中的 工作表
  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.     Dim SaveName As String
  33.     With ActiveWorkbook            '作用中的活頁簿
  34.         SaveName = .Path & "\" & Format(.Sheets(1).[a2], "yyyy") & "年選擇權.xls" '存檔路徑名稱
  35.     End With
  36.     With Workbooks.Add(1).Sheets(1)    '新增活頁簿 [存放整理的資料]
  37.         .[A1].Resize(UBound(AR, 2), UBound(AR)) = Application.WorksheetFunction.Transpose(AR)
  38.         .Cells.EntireColumn.AutoFit
  39.         .Parent.SaveAs SaveName        '新增活頁簿存檔
  40.     End With
  41.     Application.ScreenUpdating = True

  42. End Sub
複製代碼

TOP

本帖最後由 yagami12th 於 2012-1-6 10:56 編輯

謝謝GBKEE大,剛執行程式碼出現跟前面一樣的錯誤,      

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

xlDown<<會不會是這裡的關係。

TOP

回復 15# yagami12th
MsgBox E.[a2]                          '加上看看是否有錯誤
MsgBox E.[a2].End(xlDown)   '加上看看是否有錯誤
For i = E.[a2] To E.[a2].End(xlDown)

TOP

回復  yagami12th
MsgBox E.[a2]                          '加上看看是否有錯誤
MsgBox E.[a2].End(xlD ...
GBKEE 發表於 2012-1-6 11:04


回GBKEE大,程式碼經測試後,跳出a2欄的日期跟最後一欄的日期為12/16跟1/19的msgbox視窗後,接著出現前面所提的運算過於複雜的錯誤。

如附檔圖中所示:
圖檔.rar (831.52 KB)

TOP

回復 17# yagami12th
真是丈二金剛!!
Dim E As Worksheet, i As Date, M As Variant, AR(), C As Variant   刪掉試試看
成  Dim E As Worksheet, i , M As Variant, AR(), C As Variant
請再上傳你測試的檔案 看看

TOP

回GBKEE大 ,真的不好意思,也非常感謝你,讓你這麼麻煩,改了剛剛第一行的程式碼之後可以運行了,但變成自動篩選排序的視窗格式,不知是否是正常。

附件如下:
未執行的2011年近月選擇權.rar (640.67 KB)
執行後2011年近月選擇權.rar (644.24 KB)

TOP

回復 19# yagami12th
下載 [執行後2011年近月選擇權.xlsm] 打開一看 工作表的畫面都是篩選不到資料  這不太對 (應是可顯示最後篩選到的 資料)  
*** E.[a2].End(xlDown) 是最後一個日期 (一定有資料) ****                  搞不清楚.
我重新執行 [執行後2011年近月選擇權.xlsm] 後 工作表的畫面都是留在顯示 篩選到最後 E.[a2].End(xlDown)的資料
我2003升級 到可運行 2007檔案而已,還是2003版本,可請有 2007 版的測試嘹解.

TOP

        靜思自在 : 不要隨心所欲,要隨心教育自己。
返回列表 上一主題