標題:
[發問]
如何用VBA複製不同工作表資料
[打印本頁]
作者:
jerrystock
時間:
2014-4-11 21:04
標題:
如何用VBA複製不同工作表資料
請問如何用VBA來做. 工作表2的A至P欄範圍是參照資料. 列數不一定. 如何執行1次就複製工作表2的A至P欄範圍資料到工作表1.
若遇到工作表1有數值就往下一列貼上數值.例如工作表1的A1:P5有資料就往A6貼上工作表2的資料 以此來收集工作表2的資料至工作表1
煩請大大指導 謝謝
作者:
GBKEE
時間:
2014-4-12 06:47
回復
1#
jerrystock
程式區有許多這樣的例子,多看看
Option Explicit
Sub Ex()
Dim Rng(1 To 2) As Range
With Sheet2
Set Rng(1) = .Range("A1:P" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
Set Rng(2) = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp)
If Rng(2) <> "" Then Set Rng(2) = Rng(2).Offset(1) ',下移一列
'Rng(2) <> "" '有資料
Rng(1).Copy Rng(2)
End Sub
複製代碼
作者:
jerrystock
時間:
2014-4-12 10:32
感謝GBKEE快速回覆 並指導小弟
我有試著去看其他例子.但是有很多看不懂.小弟還必須努力的先去了解VBA基本語法.
對於目前GBKEE大大指導所遇到的問題.如果Sheet2的資料A1欄是當日日期.A2.A3後都是空白
從B1
列開始都有資料 像是
A1 B1 C1......P1
2014/4/12/ Name ID.......Tel
王小明 3......... 521xxx
陳大春 6.........381xxxx
每日會有不特定的列
執行巨集後只能複製A1
1列一列的資料到Sheet1
小弟有試著改看看.但知道的有限.還是摸不著頭緒 只好請GBKEE大大再次指導
謝謝
作者:
jerrystock
時間:
2014-4-12 16:40
麻煩大大
附檔[attach]17994[/attach]
作者:
GBKEE
時間:
2014-4-12 18:23
回復
4#
jerrystock
試試看
Option Explicit
Sub Ex()
Dim Rng(1 To 2) As Range
With 工作表2
Set Rng(1) = .Range("A1").CurrentRegion
End With
Set Rng(2) = 工作表1.Range("B" & 工作表1.Rows.Count).End(xlUp) 'B欄由下往上到有資料的儲存格
If Rng(2) = "" Then 'B欄由下往上到有資料的儲存格 = B1
Set Rng(2) = Rng(2).Offset(0, -1) '下移 0 列,左移一欄(到A欄)
Rng(1).Copy Rng(2) '複製表頭
Else 'B欄由下往上到有資料的儲存格 <> B1
Set Rng(2) = Rng(2).Offset(1, -1) ',下移 一列,左移一欄(到A欄)
Rng(1).Offset(1).Copy Rng(2) '不複製表頭
Rng(2).Cells(1) = Rng(1).Cells(1) 'A欄輸入日期
End If
End Sub
複製代碼
作者:
jerrystock
時間:
2014-4-12 18:47
回復
5#
GBKEE
感謝GBKEE大大 可以使用了 還幫小弟在VBA裡註解說明
真是非常感謝^^
作者:
jerrystock
時間:
2014-4-20 12:09
請問大大如果碰到工作表2的B2欄位顯示No securities to report.
就不要複製到工作表1 如何修改呢? 再次請教 謝謝
作者:
jerrystock
時間:
2014-4-20 18:43
回復
5#
GBKEE
請問大大如果碰到工作表2的B2欄位顯示No securities to report.
就停止複製到工作表1 如何修改呢? 再次請教您 謝謝!!
作者:
GBKEE
時間:
2014-4-20 20:01
回復
8#
jerrystock
有就不複製嗎?
Option Explicit
Sub Ex()
Dim Rng(1 To 2) As Range
With 工作表2
Set Rng(1) = .Range("b:b").Find("No securities to report.", Lookat:=xlWhole)
'B欄中找"No securities to report."
If Not Rng(1) Is Nothing Then Exit Sub '有此完整字串,離開程序
Set Rng(1) = .Range("A1").CurrentRegion
End With
Set Rng(2) = 工作表1.Range("B" & 工作表1.Rows.Count).End(xlUp) 'B欄由下往上到有資料的儲存格
If Rng(2) = "" Then 'B欄由下往上到有資料的儲存格 = B1
Set Rng(2) = Rng(2).Offset(0, -1) '下移 0 列,左移一欄(到A欄)
Rng(1).Copy Rng(2) '複製表頭
Else 'B欄由下往上到有資料的儲存格 <> B1
Set Rng(2) = Rng(2).Offset(1, -1) ',下移 一列,左移一欄(到A欄)
Rng(1).Offset(1).Copy Rng(2) '不複製表頭
Rng(2).Cells(1) = Rng(1).Cells(1) 'A欄輸入日期
End If
End Sub
複製代碼
作者:
jerrystock
時間:
2014-4-20 20:28
回復
9#
GBKEE
謝謝GBKEE大大 簡潔有力 可以了 謝謝^^
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)