应用公式,然后自动填充数据,直到列中的最后一个可见单元格: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】:与往常一样,最好远离Select
、ActiveCell
和Selection
。
试试下面的代码:
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的主要内容,如果未能解决你的问题,请参考以下文章