Excel VBA - 查找相对数据范围

时间:2016-04-04 22:20:21

标签: excel vba excel-vba

VBA菜鸟的位,所以请不要在我的代码上畏缩太多。我有一个文件,其中的数据行总是在变化,我写了一个小函数来清除之前的条目,然后再完成其余的宏。我的目标是清除列H中的所有条目。我不想清除整个列,只是清除第6行和第6行。这很好用:

Range("H6", Range("H1048576").End(xlUp).Offset(1, 0)).Select
Selection.ClearContents

然后我想输入我在H6中为每列中包含数据位于A列中同一行的公式。我也在完成时将值粘贴到公式上。我这样做如下:

    If Range("A7").Value <> "" Then
        Range("H6").Select
        Selection.AutoFill Destination:=Range("H6:H" & Range("A" & Rows.Count).End(xlUp).Row)
        Range("H6", Range("H1048576").End(xlUp)).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End If

以上一切正常。但是,我的问题是,如果我在前面插入一个列,由于绝对引用而中断。在这里搜索网站告诉我,我可以在第5行找到我的标题的价值如下:

Dim MyRng As Range
Set MyRng = Range("5:5").Find("Column Title", LookIn:=xlValues, LookAt:=xlWhole)

但是我对如何使用MyRng值完成其余代码感到茫然。我猜测我的回程方式是走到表格底部并跳到最后一个值来查找数据范围就是问题所在。

因此,一旦我在第5行找到带标题的列,如何将我的范围设置为数据下方的所有单元格?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这样的事情:

Dim MyRng As Range
Dim lastRow As Long

With ActiveSheet

    lastRow = .Cells(.Rows.count, "A").End(xlUp).Row
    Set MyRng = .Range("5:5").Find("Column Title", LookIn:=xlValues, LookAt:=xlWhole)
    c = MyRng.Column
    Debug.Print c

    If .Range("A7").Value <> "" Then
         .Range("H6").Select
         Selection.AutoFill Destination:=.Range(.Cells(6, c), .Cells(lastRow, c))

         .Range("H6", .Range("H1048576").End(xlUp)).Select
         Selection.Copy
         Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
    End If

End With