VBA - 使用单元格引用计数非空白单元格

时间:2016-03-03 11:24:04

标签: vba excel-vba excel

在VBA中,使用Excel 2016,我试图计算给定范围的非空单元格数,但仅使用单元格整数引用。我尝试过以下方法:

WB.Sheets(1).Range(Cells(2, X), _
Cells(2, Y)).Cells.SpecialCells(xlCellTypeConstants).count

其中X和Y是列的单元格引用。请协助。

4 个答案:

答案 0 :(得分:2)

您可以使用excel公式CountA执行此操作,因为您可能已经知道了。

您也可以使用以下方法在VBA中使用它:

with WB.sheets(1)
    WorksheetFunction.CountA(Range(.Cells(2, X), .Cells(2, Y)))
end with

答案 1 :(得分:2)

试试这个:

Range(WB.Sheets(1).Cells(2, X), _
WB.Sheets(1).Cells(2, Y)).Cells.SpecialCells(xlCellTypeConstants).count

您应该在单元格之前而不是在范围之前添加工作簿和工作表

答案 2 :(得分:1)

尝试这样:

Dim nonBlanck as long
    nonBlanck = WorksheetFunction.CountA(WB.Sheets(1). _
              Range(Cells(2, X), Cells(2, Y)). _   
                         SpecialCells(xlCellTypeConstants))

但是,如果WB.SHeets(1)未激活,那么您可能会遇到一些问题。因此,请尝试使用此改进的解决方案:

Dim nonBlanck as long
    With  WB.Sheets(1)
        nonBlanck = WorksheetFunction.CountA( _
              .Range(.Cells(2, X), .Cells(2, Y)). _   
                         SpecialCells(xlCellTypeConstants))
    End With

答案 3 :(得分:1)

您需要一种方法来定义剪切列的范围,然后应用SpecialCells

Sub dural()
    Dim x As Long, y As Long, rng As Range

    x = 3
    y = 5
    Set rng = Range(Cells(2, x), Cells(Rows.Count, y))
    MsgBox rng.Cells.SpecialCells(xlCellTypeConstants).Count
End Sub

enter image description here