2017-03-13 129 views
0

我需要從另一個表格中複製包含說出單元格A1中數據的月份的一系列數據。因此,我2017年2月在單元格A1中,在2017年1月1日至2017年12月31日的另一張表格中顯示一行數據,日期是A行,下面的行中的數據是。我想創建一個宏,每當我運行它時,它將讀取單元格A1,如果它是2017年2月,它將複製2017年2月1日至2017年2月28日的數據列,如果單元格A1是2017年3月,它將從2017年3月1日至2017年3月31日複印。我該怎麼做?如何在VBA中使用另一個單元格中的值引用VBA中的單元格

我記錄了宏,但引用的單元格已鎖定,因此它將始終從2017年2月1日複製到2017年2月28日,這不是我想要的。

Windows("MASTERFILE.xlsm").Activate 
Range("FA2:FT2").Select 
Selection.Copy 
Windows("NEW_FILE.xlsm").Activate 
Sheets("borrowing").Select 
Range("B2").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Windows("MASTERFILE.xlsm").Activate 
Range("FA25:FT28").Select 
Application.CutCopyMode = False 
Selection.Copy 
Windows("NEW_FILE.xlsm").Activate 
Range("B3").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Sheets("Main Page").Select 

末次

請幫助。謝謝!

回答

0

這可能有所幫助。

Sub GetDataByMonth() 
    Dim mth As Integer, year As Integer, data As Range, item As Range 

    With Worksheets("Sheet1") 
     mth = VBA.DatePart("m", .Range("A1")) 
     year = VBA.DatePart("yyyy", .Range("A1")) 
    End With 

    Set data = Worksheets("Sheet2").Range("A1:A200") 

    For Each item In data 
     If VBA.DatePart("m", item) = mth And VBA.DatePart("yyyy", item) = year Then 
      Range(Cells(Item.Row, 2), Cells(Item.Row, 40)).Copy 
      Item.Offset(0, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
     End If 
    Next item 
End Sub 
  • 假設你的日期格式如S /片
  • 它複製每條線路在同一時間日期。
  • 假設你想在B列(2)複製到(40)
+0

感謝您的幫助嗨的數據!它的工作,但我如何使它只能從B開始而不是整行復制? – yeocs93

+0

你確切地知道行的寬度嗎?例如,它會一直是從B到H嗎? –

+0

假設您想將col B的行復制到H,將'item.EntireRow.Copy'更新爲'Range(Cells(item.Row,2),Cells(item.Row,8))。EntireRow.Copy Destination :=工作表(「Sheet3」)。範圍(「A」&rw)' –

相關問題