使用offset查找空单元格并粘贴值范围

时间:2017-02-06 16:28:13

标签: excel vba excel-vba

我在excel工作表(XYZ)中有一个值向量(C8:AM8)。使用VBA代码,我需要做的是从C11开始复制并粘贴那些单元格,但如果C11有一个值,那么我需要偏移1行并将上述值(C8:AM8)粘贴到C12中,或者如果是C12有一个值,然后是下一个空行。

基本上,截至目前,我有一些看起来像这样......

Dim CellName As String
Dim CheckCell As Range
Dim RowA As Range

CellName = "C8:AM8"

For Each CheckCell In Sheets("XYZ").Range("C11:C50")
    If Not IsEmpty(CheckCell.Value) Then 
        Set RowC = CheckCell.Offset(1, 0)   
    Else
        Range(CellName).Copy Range("C11" + RowC) 
    End If      
Next CheckCell

最低限度,我知道问题出在这里:

Range(CellName).Copy Range("C11" + RowC)

我是VBA的新手,因此我不确定使用的语法是否正确。我已尝试使用括号内的RowC,括号外,引号,引号之外等多种排列,我似乎无法确定它。我认为这个问题非常简单,但我显然缺少一些关键的东西,似乎无法在网上找到我需要的东西。

非常感谢任何帮助。

谢谢!

3 个答案:

答案 0 :(得分:1)

以下行会在行C中的最后一个非空单元格后复制您的范围:

Worksheets("XYZ").Range("C8:AM8").Copy Worksheets("XYZ").Range("C1000000").End(xlUp).Offset(1)

答案 1 :(得分:1)

我会选择:

With Sheets("XYZ")
    .Range("C8:AM8").Copy .Range("C" & WorksheetFunction.Max(11, .Cells(.Rows.count, "C").End(xlUp).Offset(1).Row))
End With

答案 2 :(得分:0)

您需要输入以下代码:

Range(CellName).Copy Range("C11" + RowC)

像这样:

Dim my_row as integer
my_row=11
Range(CellName).Copy Range("C" & (my_row  + RowC))