仅插入公式可见单元格
我有3列的数据
AB&C,其中列A上的一个筛选器处于活动状态,我想要应用一个代码,以便公式应用于列C – 从第二个可见行到最后一个可见行。
这是我写的代码,但是如果我改变范围(“C:C”)或范围(“C2:C”),它不起作用
Sub Test() Dim rng As Range Range("C1").Select Set rng = Application.Intersect(ActiveSheet.UsedRange, Range("**C2:C2000**")) rng.Select Selection.Formula = "=RC[-1]+RC[-2]" End Sub
有了一个积极的AutoFilter方法 ,大概你的第一行包含列标题标签,数据低于。 Range.CurrentRegion属性比Worksheet.UsedRange属性更适合这种情况。
带有xlCellTypeVisible的Range.SpecialCells方法将引用可见的单元格。 我发现工作表的SUBTOTAL函数提供了一个很好的非破坏性的方法,在尝试访问它们之前看到有可见的单元格。
几个With … End With语句将帮助您逐步隔离您正在查找的单元格。
Sub test() 'note that not a single var is necessary With Worksheets("Sheet1") '<~~ surely you know what worksheet you are on With .Cells(1, 1).CurrentRegion With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0) '<~~one row down If CBool(Application.Subtotal(103, .Cells)) Then 'there are visible cells With .Columns(3).SpecialCells(xlCellTypeVisible) .Cells.FormulaR1C1 = "=RC[-1]+RC[-2]" End With End If End With End With End With End Sub
我已经使用了Range.FormulaR1C1属性 (而不是你原来的Range.Formula属性 ),你使用的是xlR1C1
而不是xlA1
公式语法。