应用公式,然后自动填充数据,直到列中的最后一个可见单元格:VBA

Posted

技术标签:

【中文标题】应用公式,然后自动填充数据,直到列中的最后一个可见单元格:VBA【英文标题】:Applying a formula and then autofill the data till last visible cell in the column: VBA 【发布时间】:2017-01-03 05:43:56 【问题描述】:

我使用此代码应用长度公式,然后 Autofill 直到最后一个可见单元格,但出现错误

运行时错误 '1004' - object_Global' 的方法 'Range' 失败

代码

Range("C2").Select
ActiveCell.FormulaR1C1 = "=LEN(RC[-1])"
Selection.AutoFill Destination:=Range("C2:C" & Lastrow).SpecialCells(xlCellTypeVisible).Select
Selection.Copy

【问题讨论】:

如果您不是真的在寻找特殊单元格,您可以使用像 Range("C2:C" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=LEN(RC[-1])" 这样的 1 衬垫 【参考方案1】:

从您的代码看来,您需要 COl B 中单元格的长度。下面的代码对我有用。

Sub x()
    Range("C2:C" & Range("B" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).FormulaR1C1 = "=LEN(RC[-1])"
End Sub

【讨论】:

【参考方案2】:

与往常一样,最好远离SelectActiveCellSelection

试试下面的代码:

Dim FitRng As Range, Lastrow As Long

Range("C2").FormulaR1C1 = "=LEN(RC[-1])"

Set FitRng = Range("C2:C" & Lastrow).SpecialCells(xlCellTypeVisible)
FitRng.FillDown

如果您不想使用FillDown 方法,您可以简单地使用:

FitRng.FormulaR1C1 = "=LEN(RC[-1])"

【讨论】:

你不是也需要定义Lastrow?? @nightcrawler23 我只更正了 PO 分享的部分 我运行了原始代码,它只是因为未定义变量而出错,这意味着这是原始问题。优化代码不是问题 @nightcrawler23 当然,您也没有在他设置 ia AutoFilter 和其他设置的 PO 代码中,可能是不同的工作表。我试图对 PO 提供的部分和信息给出最佳答案。 (也许他将Lastrow定义为Double,我怎么能猜到他没有提供的所有信息?)

以上是关于应用公式,然后自动填充数据,直到列中的最后一个可见单元格:VBA的主要内容,如果未能解决你的问题,请参考以下文章

Do While Error,自动填充代码

自动填充到最后一个活动行

Excel 自动填充和调整公式

自动填充公式

公式自动填充日期列适用于工作表但不适用于表单

如何根据excel中的另一个单元格值自动填充两个不同列中的数据