我的问题如下。我正在为片材录制宏,这个范围是动态的。
公式为=CountIF(A:A;A2)
并记录下来:
Range("M2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-12],RC[-12])"
Range("M2").Select
Selection.AutoFill Destination:=Range("M2:M4333"), Type:=xlFillDefault
Range("M2:M4333").Select
由于行是动态的,我想结束每个公式到lastrow。我在这里搜索了答案并将此功能复制到宏的开头。
Function GetLastRow(sht As Worksheet, col As String) As Integer
GetLastRow = sht.Range(col & CStr(sht.Rows.Count)).End(xlUp).row
现在我试图将其称为原始录制的宏
Range("M2").Select
Range(Selection, Selection.End(xlDown)).Select
Formula1 = "=COUNTIF(A:A" & GetLastRow(Sheets("Sheet1"), "A") & ",A2))"
我将其更改为看起来像在工作表中复制的公式,而不是像记录的那样。我将不胜感激。如果lastrow函数与记录公式一起使用会更好,因为我有很多其他公式也会遇到同样的问题。
答案 0 :(得分:0)
您希望将第2行中的列M填充到符合A列中最后一个填充单元格的M列中的行。使用Range.Offset property和Range.Address property获取要在其中使用的正确地址COUNTIF function。
With Worksheets("Sheet1") 'you should know what worksheet you are on!
With .Range("M2:M" & .Cells(.Rows.Count, "A").End(xlUp).Row)
.FormulaR1C1 = "=COUNTIF(" & .Offset(0, -12).Address(ReferenceStyle:=xlR1C1) & ", RC1)"
End With
End With