返回列表 上一主題 發帖

加權指數歷史資料之排序問題

加權指數歷史資料之排序問題

各位大大,

附件是可以設定要"擷取連續幾個月份"的加權指數歷史股價資料,
現在的問題是,
資料已經可以抓得下來,
但是...卻不知道怎樣寫VBA讓它進行排序,並刪除不必要的行列...
(有一個"排序後"的sheet,就是希望達到的結果!!)

拜請各位大大指教!!!
謝謝了!!

加權歷史行情排序.rar (21.7 KB)
新手上路

回復 1# cudui
  1. Sub yy()
  2. c = Array(1, 2, 3, 4, 5, 11, 14)
  3. With Sheets("加權歷史行情原始檔")
  4.   .[A9:E9].Copy Sheets("加權歷史行情-排序後").[A1]
  5.   .[K9].Copy Sheets("加權歷史行情-排序後").[F1]
  6.   .[N9].Copy Sheets("加權歷史行情-排序後").[G1]
  7.   n = .[a65536].End(xlUp).Row
  8.   a = .Range(.Cells(1, 1), .Cells(n, 14))
  9.   ReDim arr(1 To UBound(a), 1 To 7)
  10.   x = 1
  11.   For j = 1 To UBound(a)
  12.     For i = 1 To 7
  13.       If Mid(.Cells(j, 1), 4, 1) <> "/" Then
  14.         GoTo 123
  15.       Else: arr(x, i) = a(j, c(i - 1))
  16.       End If
  17.     Next i
  18.     x = x + 1
  19. 123
  20.   Next j
  21. End With
  22. With Sheets("加權歷史行情-排序後")
  23.   .Range([A2], [G2].End(xlDown)) = ""
  24.   .[A2].Resize(j - 1, 7) = arr
  25.   .[A1].Sort Key1:=.[A1], Order1:=xlAscending, Header:=xlGuess
  26.   .Range([B2], [G2].End(xlDown)).NumberFormatLocal = "#,##0.00"
  27. End With
  28. End Sub
複製代碼

TOP

回復 1# cudui
修改一下
加權歷史行情.rar (15.27 KB)

TOP

回復 5# cudui
因為修改了檔案,所以沒貼上程式碼,加油一下就可以下載

TOP

回復 2# register313


請問大大:

為什麼我如果要在"加權歷史行情原始檔"的sheet中 執行這個巨集,
則會出現"應用程式或物件定義上的錯誤",
(在Sheets("加權歷史行情-排序後")中執行則不會有此問題....)

應用程式或物件定義上的錯誤

2012-04-19_163131.jpg
2012-4-19 16:32



我試過,需要額外加上一行:
Sheets("加權歷史行情-排序後").Activate
才能在原始檔sheets中執行巨集??
  1. Sheets("加權歷史行情-排序後").Activate

  2.    With Sheets("加權歷史行情-排序後")
  3.      .Range([A2], [G2].End(xlDown)) = ""
  4.      .[A2].Resize(j - 1, 7) = arr
  5.      .[A1].Sort Key1:=.[A1], Order1:=xlAscending, Header:=xlGuess
  6.      .Range([B2], [G2].End(xlDown)).NumberFormatLocal = "#,##0.00"
  7.    End With
複製代碼
究竟我應該怎麼改,才比較簡單正確??
謝謝~~
新手上路

TOP

回復 7# cudui

是我漏打了4個.
  1. With Sheets("加權歷史行情-排序後")
  2.   .Range(.[A2], .[G2].End(xlDown)) = ""
  3.   .[A2].Resize(j - 1, 7) = arr
  4.   .[A1].Sort Key1:=.[A1], Order1:=xlAscending, Header:=xlGuess
  5.   .Range(.[B2], .[G2].End(xlDown)).NumberFormatLocal = "#,##0.00"
  6. End With
複製代碼
在任何工作表下執行都可以

TOP

回復 8# register313

原來四個"."有差那麼多噢!!!
這四個"."是為了可以讓它在前面自動加"Sheets("加權歷史行情-排序後")"嗎??
新手上路

TOP

回復 9# cudui
With 陳述式    在一個單一物件或一個使用者自訂型態上執行一系列的陳述式。
  1. Sub Ex()
  2.     With Range("A1")
  3.         .Interior.ColorIndex = 5       '製定儲存格內部色彩在色盤中的索引值
  4.         .Value = .Interior.ColorIndex   '儲存格的值=內部色彩在色盤中的索引值
  5.     End With
  6. End Sub
複製代碼

TOP

回復 10# GBKEE

所以以下這二個敘述, [A2] or [G2]前,有"."和沒 ".", 有可能是參照的sheets會有不同嗎??
  1. 01.With Sheets("加權歷史行情-排序後")

  2. 02.  .Range([A2], [G2].End(xlDown)) = ""
複製代碼
  1. 01.With Sheets("加權歷史行情-排序後")

  2. 02.  .Range(.[A2], .[G2].End(xlDown)) = ""
複製代碼
新手上路

TOP

回復 11# cudui

With Sheets("加權")
  .[A2] = ""                  ==> 加權工作表        之 A2儲存格 =""
  [A2]=""                     ==> 目前作用之工作表  之 A2儲存格 =""
                                          (未述明何工作表 則是  目前作用之工作表)
END WITH

TOP

        靜思自在 : 不要小看自己,因為人有無限的可能。
返回列表 上一主題