Board logo

標題: [發問] 如何用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
程式區有許多這樣的例子,多看看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng(1 To 2) As Range
  4.     With Sheet2
  5.         Set Rng(1) = .Range("A1:P" & .Range("A" & .Rows.Count).End(xlUp).Row)
  6.     End With
  7.     Set Rng(2) = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp)
  8.     If Rng(2) <> "" Then Set Rng(2) = Rng(2).Offset(1) ',下移一列
  9.     'Rng(2) <> "" '有資料
  10.     Rng(1).Copy Rng(2)
  11. 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
每日會有不特定的列  
執行巨集後只能複製A11列一列的資料到Sheet1
小弟有試著改看看.但知道的有限.還是摸不著頭緒 只好請GBKEE大大再次指導
謝謝
作者: jerrystock    時間: 2014-4-12 16:40

麻煩大大
附檔[attach]17994[/attach]
作者: GBKEE    時間: 2014-4-12 18:23

回復 4# jerrystock
試試看
  1. Option Explicit
  2.     Sub Ex()
  3.         Dim Rng(1 To 2) As Range
  4.         With 工作表2
  5.             Set Rng(1) = .Range("A1").CurrentRegion
  6.         End With
  7.         Set Rng(2) = 工作表1.Range("B" & 工作表1.Rows.Count).End(xlUp) 'B欄由下往上到有資料的儲存格
  8.         If Rng(2) = "" Then                         'B欄由下往上到有資料的儲存格 = B1
  9.             Set Rng(2) = Rng(2).Offset(0, -1)       '下移 0 列,左移一欄(到A欄)
  10.             Rng(1).Copy Rng(2)                      '複製表頭
  11.         Else                                        'B欄由下往上到有資料的儲存格 <> B1
  12.             Set Rng(2) = Rng(2).Offset(1, -1)       ',下移 一列,左移一欄(到A欄)
  13.             Rng(1).Offset(1).Copy Rng(2)            '不複製表頭
  14.             Rng(2).Cells(1) = Rng(1).Cells(1)       'A欄輸入日期
  15.         End If
  16.     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
有就不複製嗎?
  1. Option Explicit
  2.     Sub Ex()
  3.         Dim Rng(1 To 2) As Range
  4.         With 工作表2
  5.             Set Rng(1) = .Range("b:b").Find("No securities to report.", Lookat:=xlWhole)
  6.             'B欄中找"No securities to report."            
  7.             If Not Rng(1) Is Nothing Then Exit Sub  '有此完整字串,離開程序
  8.             Set Rng(1) = .Range("A1").CurrentRegion
  9.         End With
  10.         
  11.         Set Rng(2) = 工作表1.Range("B" & 工作表1.Rows.Count).End(xlUp) 'B欄由下往上到有資料的儲存格
  12.         If Rng(2) = "" Then                         'B欄由下往上到有資料的儲存格 = B1
  13.             Set Rng(2) = Rng(2).Offset(0, -1)       '下移 0 列,左移一欄(到A欄)
  14.             Rng(1).Copy Rng(2)                      '複製表頭
  15.         Else                                        'B欄由下往上到有資料的儲存格 <> B1
  16.             Set Rng(2) = Rng(2).Offset(1, -1)       ',下移 一列,左移一欄(到A欄)
  17.             Rng(1).Offset(1).Copy Rng(2)            '不複製表頭
  18.             Rng(2).Cells(1) = Rng(1).Cells(1)       'A欄輸入日期
  19.         End If
  20.     End Sub
複製代碼

作者: jerrystock    時間: 2014-4-20 20:28

回復 9# GBKEE

謝謝GBKEE大大 簡潔有力 可以了 謝謝^^




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)