返回列表 上一主題 發帖

[發問] 篩選資料並且放到新的Sheet裡

[發問] 篩選資料並且放到新的Sheet裡

本帖最後由 candy516 於 2011-3-23 01:48 編輯

各位前輩你們好:
    我又有一個問題想要請教大家,是關於資料篩選的!我本來想用人工手動的方法一筆一筆篩選,但我的指導教授一直叫我寫程式= = 但我是個超級超級新手,也沒有正式學過VBA!Sheet1是每檔股票的除息日,Sheet2~11則是十年間每股的日報酬率。最後一個Sheet是我想要的結果。接下來我需要篩選出每一檔股票在除息日後14天的日報酬率(包含除息日共15天)。舉列來說,在Sheet1中2010的1234黑松它的除息日是20100719,則在Sheet2中將20100719~20100801黑松的日報酬率抓至一個新的Sheet中(包含日期也一起抓)。請問這樣繁瑣的步驟,VBA可以辦到嗎?
希望各位可以幫幫我!謝謝!

報酬率.rar (300.4 KB)

回復 2# GBKEE


    謝謝GBKEE 前輩願意幫我寫!^^誠心的謝謝謝你!
我試了一下無法將全部結果跑出來耶!
請問我應該將程式碼貼在哪一個Sheet中呢?
執行的時候有跳出一個MsgBox"股票代碼有誤"!
拜託您了!

TOP

回復 4# Hsieh


謝謝Hsieh 前輩!
再跑出來的結果裡,第一筆資料是黑松是20100719~20100629,但我想要的結果是20100719~20100806~
請問我這樣需要改哪一個地方?我有試著更改,但無法跑出來。另外在請教一下,如果我接下的資料更改,像是把報酬率換成每股盈餘,
而我同樣是要用程式抓出除息日後14天得資料,是否把程式碼貼上即可!(資料格式一樣)
感謝您的幫忙!

TOP

回復 6# Hsieh


  請問Hsieh 前輩~
這兩次的程式碼差別最主要是"x = Application.Max(3, C.Row - 14)"嗎?代表意思是?!
如果我要改抓除息日後30日的報酬是不是將部分程式碼改掉即可?!
If Not C Is Nothing And Not B Is Nothing Then
x = Application.Max(3, C.Row - 14)
   Set B1 = .[A1:A2]
   Set B2 = B.Resize(2, 1)
   Set Rng = .Cells(x, 1).Resize(30, 1)
   Set Rng1 = .Cells(x, B.Column).Resize(30, 1)
   With sht
      B1.Copy .Cells(r, k)
      B2.Copy .Cells(r, k + 1)
      Rng.Copy .Cells(r + 2, k)
      Rng1.Copy .Cells(r + 2, k + 1)
   End With
   k = IIf(k = 255, 1, k + 2)
   r = IIf(k = 1, r + 33, r)
   Else
   MsgBox "無此除權資料"

謝謝您!

TOP

回復 7# GBKEE

謝謝前輩!^^

報酬率(test).rar (309.77 KB)

TOP

回復 11# GBKEE


成功了!
前輩您所寫的程式是不是只能單獨選一支股票?

TOP

回復 14# GBKEE


不好意思~是我表達的不過清楚!
我的訴求是要將十年每股的資料全部抓至一個新的SHEET中!
就像是Hsieh 前輩所寫的程式那樣!
Hsieh 前輩的程式也以幫我解決我的問題!
很謝謝您的幫忙~^^

TOP

回復 16# GBKEE


這樣就跟Hsieh 所寫的一樣了!
一樣的結果,有不同的寫法!
VBA真的是太厲害了!
我還需要時間來研究一下這些程式碼!
以便我日後可以更改所要抓取的資料!
前輩們真的都很厲害耶!
謝謝您唷!

TOP

回復 6# Hsieh


   請問前輩:
    如果我要將原本的結果改成附檔那樣的方式呈現,我應該改哪個地方的程式碼呢?(附檔的Sheet2)
是這個地方嗎?
      B1.Copy .Cells(r, k)
      B2.Copy .Cells(r, k + 1)
      Rng.Copy .Cells(r + 2, k)
      Rng1.Copy .Cells(r + 2, k + 1)
謝謝您!

股價報酬率.rar (307.58 KB)

TOP

回復 18# Hsieh


謝謝前輩!又幫我解決一個問題了!
真的非常感謝您!
^^

TOP

        靜思自在 : 人的心地是一畦田,土地沒有播下好種子,也長不出好的果實。 -
返回列表 上一主題