標題:
[發問]
關於(貼好資料後,自動將其他格位的公式往下拉的問題)
[打印本頁]
作者:
yagami12th
時間:
2012-12-9 00:13
標題:
關於(貼好資料後,自動將其他格位的公式往下拉的問題)
這是一個關於自動將公式下拉的問題,請教各位大大,如何用vba指令完成此動作,資料說明如下:
假設表1的a欄b欄c欄的最後一欄已經貼好今天的數值,如何自動在d欄與e欄的最後一列的公式往下拉一格完成自動運算
表1
a欄 b欄 c欄 d欄 e欄
日期 最高價 最低價 最高-最低價 最高價/最低價
1/1 8000 7900 100 1.01
1/2 8100 8000 100 1.01
1/3 8150 8000
作者:
GBKEE
時間:
2012-12-9 10:32
回復
1#
yagami12th
是這樣嗎?
Option Explicit
Sub Ex()
[D2:E2].AutoFill Destination:=Range("D2:E" & [C2].End(xlDown).Row) ', Type:=xlFillCopy
End Sub
複製代碼
作者:
yagami12th
時間:
2012-12-9 13:53
回復
2#
GBKEE
謝謝GBKEE大,我照這個嘗試改寫看看,因為昨晚試的時候,想把公式自動往下拉到最後一欄,但昨天用錄制的方式觀察時,它會一直用有欄位數目的程式碼..
作者:
yagami12th
時間:
2012-12-9 14:09
回復
2#
GBKEE
謝謝GBKEE大的解答
但有另一個問題,假設表1的a欄b欄c欄的最後一欄已經貼好今天的數值,自動在d欄與e欄的最後一列的公式往下拉一格完成自動運算,
但因為8:45之前b4跟c4欄(8150跟8000)是沒有資料的,所以想試寫兩種條件判斷式,想請教如何寫這個啟動條件:
第一種:因8:45之前在b4欄跟c4欄是空白沒資料的,如果8:45有資料進來(不為空白,則執行某巨集if cells(4,3)<>"" then ..... <<<<不知正不正確
第二種:這一種是設定成時間啟動,在8:45:05秒時,則執行...
表1
a欄 b欄 c欄 d欄 e欄
日期 最高價 最低價 最高-最低價 最高價/最低價
1/1 8000 7900 100 1.01
1/2 8100 8000 100 1.01
1/3 8150 8000
作者:
GBKEE
時間:
2012-12-9 14:37
回復
4#
yagami12th
Option Explicit
Private Sub Workbook_Open()
If [COUNTA(Sheet1!D2:E2)] = 2 Then 'D2:E22. 都有資料 'Sheet1! : 為工作表名稱
'If Application.CountA(Sheet1.[D2:E2]) = 2 Then 'Sheet1. : 為工作表模組名稱
'If Application.CountA(Sheets("Sheet1").[D2:E2]) = 2 Then
Ex
Else
Application.OnTime #8:45:00 AM#, "EX" 'EX 在一般模組
'Application.OnTime #8:45:00 AM#, "EX" 'EX 在一般模組
'Application.OnTime #8:45:00 AM#, "ThisWorkbook.EX" 'EX 在物件模組
'Application.OnTime TimeValue("8:45:00"), "EX" 'EX 在一般模組
'Application.OnTime Now + TimeValue("0:0:30"), "EX" '30秒後執行EX
End If
End Sub
Sub Ex()
With Sheet1
.[D2:E2].AutoFill Destination:=.Range("D2:E" & .[C2].End(xlDown).Row) ', Type:=xlFillCopy
End With
End Sub
複製代碼
作者:
yagami12th
時間:
2012-12-9 14:54
回復
5#
GBKEE
謝謝GBKEE大,關於程式碼中的第三行是用"方法一"的意思嗎?有一點看不懂,想請教GBKEE大,不過後面比較看的懂,用ontime的部份應該是"方法二"
作者:
GBKEE
時間:
2012-12-9 15:21
回復
6#
yagami12th
3式都是工作表函數"=COUNTA(D2:E2)"
方法一 計算 D2:E2 的資料數
[COUNTA(Sheet1!D2:E2)]
[
** Excel程式的物件,函數,名稱(不可是變數 ) **
]
Application.CountA(Sheet1.[D2:E2]) Application.工作表函數(vba支援的)
Application.CountA(Sheets("Sheet1").[D2:E2]) <=>Application.CountA(Sheets("Sheet1").Range("D2:E2"))
作者:
yagami12th
時間:
2012-12-9 15:36
回復
7#
GBKEE
謝謝GBKEE大,正在消化且改寫中,先試試看會不會成功。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)