返回列表 上一主題 發帖

[發問] 如何取得sheet1指定內容複製到sheet2

[發問] 如何取得sheet1指定內容複製到sheet2

Sheet1是每天會更新資料.
我想取sheet1 A:A的指定內容,複製到Sheet2的表格.
因為是每天都取Sheet1A:A的指定內部,想利用VAB幫忙完成.
設定複製到sheet2可以按日期帖上.2017/4/1-2017/4/30

123.zip (7.4 KB)

Sub nn()
  Dim lSRow&, lTRow&
  Dim rTar As Range
  Dim wsTar As Worksheet
  
  Set wsTar = Sheets("Sheet2")
  
  With Sheets("Sheet1")
    wsTar.Cells.Clear
    .[A1:D2].Copy wsTar.[A1]
    lTRow = 7
    lSRow = 3
    Set rTar = .Cells(lTRow, 1)
    While rTar + rTar.Offset(, 1) + rTar.Offset(, 2) + rTar.Offset(, 3) <> 0
      rTar.Resize(, 4).Copy wsTar.Cells(lSRow, 1)
      lSRow = lSRow + 1
      lTRow = lTRow + 5
      Set rTar = .Cells(lTRow, 1)
    Wend
  End With
End Sub

我有爬文,引用了這個VBA,但是我每天都會在Sheet1更新
我把這句wsTar.Cells.Clear刪除了,怎樣可以每天跳一行,今天A1帖上,明天B1帖上,如此類推。
因為是整個月都要重複取A:A的資料,帖上Sheet2,一列代表一天。

TOP

EndRow = ActiveSheet.UsedRange.Rows.Count + 1 '所有使用中的列數+1
我爬文找到這一句。請問各位大大,這一句對不對?還有放在那一段?

TOP

回復 4# joey0415


大大 謝謝你幫忙
請問可不可以在I=1-40 改成指定的,例如:copyC13:C98,再加上C107:C120,再上加上C138:C140。
請問怎樣改。

TOP

回復 4# joey0415


    Sub ex()

k = Sheets(2).Cells(9, Columns.Count).End(xlToLeft).Column
For i = 1 To 40
   Sheets(2).Cells(i + 1, k + 1) = Sheets(1).Cells(i, 1)
Next
   Sheets(2).Cells(1, k + 1) = Format(Year(Date), "0000") & Format(Month(Date), "00") & Format(Day(Date), "00")

End Sub

大大這個方法是可行,但是For i = 1 To 40 這一行可否改成其他,因為sheet1是一份report,是一個程式讀取出來的,他讀取來有很多隱藏格,但是我要內容剛好在C11:C96,C107:C120,C137:C139。我嘗試把For i = 1 To 40 改成 For i = C11 to C139,原來是不行,出error。請師兄幫忙。

TOP

回復 7# joey0415


    大大感謝你的幫忙!今晚回到公司再套用.

TOP

回復 7# joey0415
大大謝謝你幫忙
我有幾個問題想問

Sheets(2).Cells(i - 9, k + 1) = Sheets(1).Cells(i, 3)
Sheets(2).Cells(i - 19, k + 1) = Sheets(1).Cells(i, 3)
Sheets(2).Cells(i - 35, k + 1) = Sheets(1).Cells(i, 3)  
i-9
i-19
i-35 是代表什麼?
For i = 11 To 96 如果我改成For i = 11 To 100 預多行數。要不要修改i-9?
因為我嘗試修改For i = 11 To 100 ,然後下面的For i = 107 To 120 帖出來會減少了。

TOP

回復 10# joey0415

謝謝大大解釋,完全明白。
我還有一個問題想請教你,可不可以將複製的合併格的多餘的空格自動刪除。
VBA有沒有這樣的指令。

TOP

回復 7# joey0415
Sub ex()



    k = Sheets(2).Cells(9, Columns.Count).End(xlToLeft).Column

   

    For i = 11 To 96

       Sheets(2).Cells(i - 9, k + 1) = Sheets(1).Cells(i, 3)

    Next

   

    For i = 107 To 120

       Sheets(2).Cells(i - 19, k + 1) = Sheets(1).Cells(i, 3)

    Next

   

    For i = 137 To 139

       Sheets(2).Cells(i - 35, k + 1) = Sheets(1).Cells(i, 3)

    Next

   

    Sheets(2).Cells(1, k + 1) = Format(Year(Date), "0000") & Format(Month(Date), "00") & Format(Day(Date), "00")



End Sub

大大你好
請問可不可以在以上指令入面加自動列印,按每天讀取的內容做範圍.

Sub test()

For i = 2 To 6 Step 2

Range(Cells(i, 1), Cells(i + 1, 5)).PrintOut

Next i

End Sub
我找到類似的,如何修改Range.加入自動循環列印 ,如Sheets(2).Cells(1, k + 1)

TOP

回復 13# joey0415

大大我試了很多次,都無法代入,請求你幫忙。

TOP

        靜思自在 : 欣賞別人就是莊嚴自己。
返回列表 上一主題