在范围参考中使用宏

时间:2018-02-14 16:23:46

标签: excel string vba excel-vba

bottom = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2").FormulaR1C1 = "=countblank('[Test.xlsx]Sheet1 test'!C1:C1)"

我正在尝试使用我范围内的“底部”值!C1:C1)。我希望能够计算列中缺失单元格的值。我尝试了几种组合,但我找不到让它起作用的方法。 例如,如果bottom为10,我希望它将第1列中的缺失值计算到第10行。

2 个答案:

答案 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

它还说明了数据扩展到工作表中最后一行的可能性