我在3列中有数据
A B& 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
答案 0 :(得分:2)
如果有效AutoFilter method,则可能是您的第一行包含列标题标签,数据低于该标题。 Range.CurrentRegion property比Worksheet.UsedRange property更适合这种情况。
Range.SpecialCells method xlCellTypeVisible将引用可见细胞。我发现工作表的SUBTOTAL function提供了一种很好的非破坏性方法,可以在尝试访问它们之前看到iof有可见的单元格。
一些With ... End With statements将帮助您逐步隔离您正在寻找的细胞。
Remove-AzureStorageBlob -Blob $diskname -Container vhds -Context $context
我使用的Range.FormulaR1C1 property(而不是原来的Range.Formula property)单曲使用了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
而不是xlR1C1
公式语法。