bottom = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2").FormulaR1C1 = "=countblank('[Test.xlsx]Sheet1 test'!C1:C1)"
我正在尝试使用我范围内的“底部”值!C1:C1)。我希望能够计算列中缺失单元格的值。我尝试了几种组合,但我找不到让它起作用的方法。 例如,如果bottom为10,我希望它将第1列中的缺失值计算到第10行。
答案 0 :(得分:0)
在范围参考中使用宏的标题有点误导。
从标题我建议使用此代码:
Public Function MyRange() As Range
Dim rng_bottom As Range
With ThisWorkbook.Worksheets("Sheet1 Test")
Set rng_bottom = .Cells(.Rows.Count, 1).End(xlUp)
Set MyRange = .Range(.Cells(1, 3), rng_bottom.Offset(, 2))
End With
End Function
然后,您可以直接输入一个单元格:=COUNTBLANK(MyRange())
,它将使用宏作为范围引用。
从您的示例代码中看起来更像是您想要这三种解决方案中的一种:
Public Sub Test()
Dim rng_bottom As Range
With ThisWorkbook.Worksheets("Sheet1 Test")
'Return a reference to the last cell in column A.
Set rng_bottom = .Cells(.Rows.Count, 1).End(xlUp)
'****SOLUTION 1:****
'Add the formula using R1C1 formatting. Offset rng_bottom by 2 columns to return reference to column C.
ThisWorkbook.Worksheets("Sheet1").Range("A1").FormulaR1C1 = _
"=COUNTBLANK('Sheet1 Test'!R1C3:" & rng_bottom.Offset(, 2).Address(, , xlR1C1) & ")"
End With
Dim lng_bottom As Long
With ThisWorkbook.Worksheets("Sheet1 Test")
'Return last row number in column A.
lng_bottom = .Cells(.Rows.Count, 1).End(xlUp).Row
'****SOLUTION 2:****
'Add the formula using R1C1 formatting.
ThisWorkbook.Worksheets("Sheet1").Range("A2").FormulaR1C1 = _
"=COUNTBLANK('Sheet1 Test'!R1C3:R" & lng_bottom & "C3)"
'****SOLUTION 3:****
'Add the formula using A1 formatting.
ThisWorkbook.Worksheets("Sheet1").Range("A3").Formula = _
"=COUNTBLANK('Sheet1 Test'!$C$1:$C$" & lng_bottom & ")"
End With
End Sub
答案 1 :(得分:0)
这是一个UDF,它返回列中的使用范围
=COUNTBLANK((UsedRange(A:A)))
要计算A列中的空单元格数,请使用它
FromRowOne
可选参数=COUNTBLANK((UsedRange(A:A, FALSE)))
可用于忽略第1行中的空白到第一个使用的行,如下所示
Nothing
如果传递空列,则返回strsplit
它还说明了数据扩展到工作表中最后一行的可能性