Excel VBA选择列的新usedrange部分

时间:2016-08-24 01:05:54

标签: excel-vba vba excel

Data Sample

大家好。

我需要你的帮助。

我想将公式应用于我刚刚添加的新行。我有一行代码用于完整的数据集,但我不确定如何修改它,或者是否有更好的方法来完成它。

我使用这一行代码离开了我的联盟,我理解它正在做什么,但我没有写它。

Sheets("Closed Loop").Range(varPastePos).Offset(0, 2).Resize(ActiveSheet.UsedRange.Rows.Count - 1, columnsize:=1).FormulaR1C1 = "My Formula"

varPastePos是粘贴新数据的位置,在本例中为$F$28

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

.UsedRange还会包含格式化的空白单元格,因此找不到最后一行使用它是不可靠的。

Set ws = Sheets("Closed Loop")
Set cell1 = ws.Range(varPastePos) ' F28
Set cell2 = cell1.End(xlDown)     ' F32 ? the last cell with data below F28. Similar to clicking on F28 and pressing Ctrl + down
Set rngF = ws.Range(cell1, cell2) ' F28:F32
Set rngH = rngF.Offset(, 2)        ' H28:H32
rngH.FormulaR1C1 = "My Formula"

答案 1 :(得分:0)

使用Range().FillDown扩展预先存在的公式。

Dim lastRow As Long
lastRow = Range("F" & Rows.Count).End(xlUp).Row
Range("A2", "A" & lastRow).FillDown

您可以一次FillDown多个列:

 Range("A2", "D" & lastRow).FillDown

你可以像这样在一行中完成所有这些:

Range("A2", Range("F" & Rows.Count).End(xlUp)).FillDown