標題:
[發問]
請問「最後一行資料 下拉複製」到新的一行,如何寫成巨集或VB呢?
[打印本頁]
作者:
cslu37
時間:
2019-5-2 18:39
標題:
請問「最後一行資料 下拉複製」到新的一行,如何寫成巨集或VB呢?
請問各位大大:
因為每日都要更新一筆資料,所以都是「選取」「最後一行」,再拖曳向下拉(複製)到新的一行。
如圖:複製5月2日的「A7:E7」,然後向下拉,變成多一行 5月3日的「A8:E8」。
且每日向下新增一行5月4日「A9:E9」、5月5日「A10:E10」、5月6日「A11:E11」........
請各位大大幫忙,這樣的動作,要如何寫成巨集呢?還是需要用VB寫呢?
作者:
GBKEE
時間:
2019-5-5 16:15
回復
1#
cslu37
試試看
這工作表 Sheet模組 的程式碼
Option Explicit
Sub Ex()
Dim Rng As Range
Set Rng = Range("A2:E2")
If Rng.End(xlDown).Row <> Rows.Count Then
'工作表的總列數: Rows.Count 2003=65536,2010=1048576
Set Rng = Range(Rng, Rng.End(xlDown))
'"A2:E2" 往下延伸到最後又資料的位置
End If
'Range.AutoFill 方法 可參說明
With Rng
.AutoFill Destination:=.Rows("1:" & .Rows.Count + 1), Type:=xlFillDefault
'.Rows("1:" & .Rows.Count + 1) Rng的列數+1的範圍
End With
End Sub
複製代碼
作者:
cslu37
時間:
2019-5-6 13:25
回復
2#
GBKEE
謝謝GBKEE大大喔:loveliness: !!
作者:
cslu37
時間:
2019-5-8 23:01
回復
2#
GBKEE
請問 GBKEE 大大:
目前遇到的問題...
就是Excel共有三個Sheet(Sheet1、Sheet2、Sheet3),但三個Sheet現有的行數都不同,需要下拉的欄位也不同,
想要做一個按鈕,按一下按鈕,就可以一次拖曳下拉三個Sheet最後一行的資料呢?
懇請GBKEE大大指導!!謝謝您!!
作者:
cslu37
時間:
2019-5-9 09:22
回復
2#
GBKEE
感謝GBKEE大大,附上檔案,麻煩GBKEE大大指導!謝謝您!!
工作表1→A欄~E欄,從14行 拖曳下拉到15行。
工作表2→A欄~G欄,從27行 拖曳下拉到28行。
工作表3→A欄~I欄,從41行 拖曳下拉到42行。
[attach]30552[/attach]
作者:
GBKEE
時間:
2019-5-10 14:10
回復
5#
cslu37
依你附檔內容所寫程式碼
試試看
Option Explicit
Dim Rng As Range
Sub Ex_下拉1()
Dim i As Integer, AR(), E As Variant
AR = Array(工作表2, 工作表3)
'***子程式的方呆措施*****
For Each E In AR '迴圈 e : 依序傳回 陣列內的工作表物件
If TypeName(E) <> "Worksheet" Then MsgBox "陣列元素需是 Worksheet 物件": End
Next
'*************************
With Sheets("工作表1")
Set Rng = .Range("a3", "e" & .Range("a2").End(xlDown).Row)
If .Range("a2").End(xlDown).Row = Rows.Count Then
Set Rng = .Range("A3") '工作表1尚未有資料
Rng = Date
For i = 2 To 5 '迴圈:依序輸入資料
'**不知公式為和**
Rng.Cells(1, i) = i
Next
Else
'工作表1已有資料 , 用範圍下拉方法
If Rng.Rows.Count = 1 Then ''**因下拉的範圍列數只有一列***
.Select
Rng.Cells(2, 1).Activate
MsgBox "下拉的範圍列數只有一列" & vbLf & "請自行輸入" & Rng.Offset(1).Address & "的數值...."
End
End If
Rng.AutoFill Destination:=Rng.Rows("1:" & Rng.Rows.Count + 1), Type:=xlFillDefault
Set Rng = Rng.Cells(Rng.Rows.Count + 1, 1) 'A欄範圍內最後的日期
End If
End With
Ex_下拉2 AR '呼叫 子程序
End Sub
Sub Ex_下拉2(Sh As Variant) '子程序 需傳遞參數(陣列(工作表物件))
Dim xRng As Range, AR(), E As Variant
For Each E In Sh '迴圈 e : 依序傳回 陣列內的工作表物件
If E.Name = "工作表2" Then
'資料2-3 資料2-4 資料2-5 資料2-6 的公式
AR = Array("=rc[-2]*1+rC[-1]*1", "=rC[-3]*rC[-2]+rC[-1]", "=rC[-3]*rC[-2]-rc[-1]", "=rc[-3]+rc[-2]-rc[-1]")
ElseIf E.Name = "工作表3" Then
'資料3-3 資料3-4 資料3-5 資料3-6 資料3-7 資料3-8 '的公式
AR = Array("=rc[-2]+rc[-1]", "=rc[-1]-rc[-2]", "=rc[-2]+rc[-1]", "=rc[-2]*rc[-1]", "=rc[-2]+rc[-1]", "=rc[-2]-rc[-1]")
Else
MsgBox "工作表錯誤 程式關閉": End
End If
Set xRng = E.Range("A:A").Find(Rng.Text, LookIn:=xlValues) '尋找工作表1A欄範圍內最後的日期
If xRng Is Nothing Then '沒找到
Set xRng = E.Range("A" & Rows.Count).End(xlUp).Offset(1)
'設為A欄範圍內最後的日期的下一列位
Else
If xRng.Range("A2") <> "" Then '找到 且 下一列位<>""
With xRng
Range(.Cells(2, 1), .Range("A2").End(xlToRight).End(xlDown)) = ""
'清除下一列位後的資料
End With
End If
End If
xRng.Resize(, 3).Value = Rng.Resize(, 3).Value '給上工作表下拉A:C的資料
With xRng.Cells(1, 4).Resize(, UBound(AR) + 1)
.Cells = AR '給上工作表2,工作表3:C後資料的公式
'***** 如上列 給上工作表2,工作表3:C後資料的公式 正確
.Cells = .Value '***** 可用下列此程式碼將處存格的公式轉為值
'*************************************************
End With
Next
End Sub
複製代碼
作者:
hcm19522
時間:
2019-5-10 16:03
https://blog.xuite.net/hcm19522/twblog/587551775
作者:
cslu37
時間:
2019-5-11 00:14
本帖最後由 cslu37 於 2019-5-11 00:15 編輯
回復 cslu37
試試看
這工作表 Sheet模組 的程式碼
GBKEE 發表於 2019-5-5 16:15
Option Explicit
Sub Ex()
Dim Rng As Range
Set Rng = Range("A2:E2")
If Rng.End(xlDown).Row <> Rows.Count Then
'工作表的總列數: Rows.Count 2003=65536,2010=1048576
Set Rng = Range(Rng, Rng.End(xlDown))
'"A2:E2" 往下延伸到最後又資料的位置
End If
'Range.AutoFill 方法 可參說明
With Rng
.AutoFill Destination:=.Rows("1:" & .Rows.Count + 1), Type:=xlFillDefault
'.Rows("1:" & .Rows.Count + 1) Rng的列數+1的範圍
End With
End Sub
複製代碼
GBKEE大大您好:
我嘗試著改成拉到下一行後,再將整行改成"值",但爬文爬了一整晚,也嘗試修改...但一直出現錯誤訊息>"<
請大大指導,要在哪加上value,才能在下拉後 再改成"值"呢?
感謝GBKEE大大!!
作者:
cslu37
時間:
2019-5-13 21:43
回復
7#
hcm19522
謝謝 hcm19522 的分享!!
只是遇到一個問題...就是...日期會自動將空的日期自動補上 並連續...
例如:因為六日不需要更新,所以5/10 接著就是 5/13,但G2顯示5/13後,會自動將5/11、5/12也填入...
變成5/10
5/11
5/12
5/13
請問如何才能將週末扣除呢,懇請hcm19522大大指導,謝謝您!!
作者:
hcm19522
時間:
2019-5-14 10:37
https://blog.xuite.net/hcm19522/twblog/587574650
作者:
cslu37
時間:
2019-5-15 09:47
回復
10#
hcm19522
感謝 hcm19522 大大的指導,謝謝您喔!!
作者:
cslu37
時間:
2019-5-16 21:31
回復
10#
hcm19522
感謝 hcm19522 大大指導!!
這樣就不用手動刪除假日了!!謝謝您!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)