- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
2#
發表於 2011-3-23 08:57
| 只看該作者
回復 1# candy516
試試看- Option Explicit
- Sub Ex()
- Dim Rng As Range, 除息日 As Date, 股票 As Range, R As Range, Ar(), i As Integer
- With Sheets("Sheet1")
- .Activate
- Set Rng = .Range("A2:A" & .Range("A2").End(xlDown).Row) '設定Sheet1股票範圍
- If Application.Intersect(Rng, ActiveCell) Is Nothing Then '沒有選擇到股票
- MsgBox "股票代號: 有誤"
- Exit Sub
- End If
- Set Rng = ActiveCell
- 'Rng(1, 2) = Rng.Cells(1, 2)
- 除息日 = Mid(Rng(1, 2), 1, 4) & "/" & Mid(Rng(1, 2), 5, 2) & "/" & Mid(Rng(1, 2), 7, 2)
- End With
- ReDim Ar(1, 0)
- With Sheets(Mid(Rng(1, 2), 1, 4)) '除息年度工作表
- Set 股票 = .Rows(1).Find(Rng, LOOKAT:=xlPart, LookIn:=xlValues) '找到股票代號名稱 日報酬率欄位
- For Each R In .Range("A3:A" & .Range("A3").End(xlDown).Row) '
- If R >= 除息日 And R <= 除息日 + 14 Then
- Ar(0, i) = R
- Ar(1, i) = R.Cells(1, 股票.Column)
- i = i + 1
- ReDim Preserve Ar(1, i) '增加陣列的維數
- End If
- Next
- End With
- If i = 0 Then
- MsgBox "找不到" & 股票 & "日報酬率"
- Exit Sub
- End If
- With Sheets("Sheet2").Range("IV1").End(xlToLeft).Offset(, 1) 'Range("IV1")往左有資料的第一個儲存格->Offset(, 1) 向右移動一欄
- .Cells(1, 2) = 股票
- .Cells(2, 1) = "年月日"
- .Cells(2, 2) = "日報酬率"
- .Cells(3, 1).Resize(i, 2) = Application.WorksheetFunction.Transpose(Ar)
- End With
- End
- End Sub
複製代碼 |
|