通过vba

时间:2018-08-30 15:40:14

标签: vba excel-vba

(例如)我已将复制的数据粘贴到k5,k6,k7,k8,k9,k10,11,12,13,18,19,对于下个月,如果我运行宏,它将被粘贴到L5,6,7,8,9,10,11,12,13,18,19并在未来几个月逐步增加到m,n,o。您能否请任何人建议如何做?

我的代码:

Sub Get_Data()

Dim sh As Worksheet, myRange As Range

Set sh = ActiveWorkbook.Sheets("Hide")

Worksheets("Hide").Range("B1").Copy
Worksheets("FP Support WPOs").Range("K5").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B2").Copy
Worksheets("FP Support WPOs").Range("K6").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B3").Copy
Worksheets("FP Support WPOs").Range("K7").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B4").Copy
Worksheets("FP Support WPOs").Range("K8").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B5").Copy
Worksheets("FP Support WPOs").Range("K9").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B6").Copy
Worksheets("FP Support WPOs").Range("K10").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B7").Copy
Worksheets("FP Support WPOs").Range("K11").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B8").Copy
Worksheets("FP Support WPOs").Range("K12").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B9").Copy
Worksheets("FP Support WPOs").Range("K13").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B10").Copy
Worksheets("FP Support WPOs").Range("K18").PasteSpecial xlPasteValues

Worksheets("Hide").Range("B11").Copy
Worksheets("FP Support WPOs").Range("K19").PasteSpecial xlPasteValues

Worksheets("Hide").Cells.ClearContents


End Sub

2 个答案:

答案 0 :(得分:0)

您可以保存一点并使用以下方法动态确定工作表中的最后一个填充列:

Dim lc As Long
With Sheets("FP Support WPOs")
    lc = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With

使用它,您可以将所需的所有数据粘贴到下一列(将使用value = value):

Dim lc As Long, i as long, j as variant
j = array("5", "6", "7") 'you can fill rest
With Sheets("FP Support WPOs")
    lc = .Cells(1, .Columns.Count).End(xlToLeft).Column
    for i = 1 to 11
        .cells(j(i-1),lc+1).value = sheets("Hide").cells(i,"B").value
    next i
End With

请注意,将数组用于非连续粘贴范围,而将循环用于连续复制范围。

您还可以使用i = i + 1遍历数组,从lbound到ubound,以计算连续的迭代次数,这将导致相同的结果。

答案 1 :(得分:0)

从您的叙述中,将值从K向右复制到相邻列中

然后您可以从K5向右计数值,并从第一个空单元格开始粘贴值

Sub Get_Data()
    With Worksheets("FP Support WPOs")
        .Range("K5:K15").Offset(, WorksheetFunction.Count(.Range("K5", .Cells(5, .Columns.Count)))).Value = Worksheets("Hide").Range("B1:B11").Value
    End With
End Sub