2016-08-15 169 views
0

我想计算给定数据范围内的所有空白和非空白单元格,直到数据单元格为止。但我也有一个限制只能参考,从O4:O18计数空白和非空白单元格

sample2sample3

从上面的示例给出,我只需要从ROW4空白细胞计数与数据的细胞,其是asd。任何帮助?谢谢!

count的使用是计算非空白单元格内的空白单元格。可以说数据的最后一行是15,所以15将是数据的最后一行,从第4行到第15行,将计数范围内的空白单元格。

+0

他们会不会全部是空白,如果你从开始细胞计数到第一个单元格的数据?它会始终在第4行开始吗? –

+0

所以你想获得范围(“O4:O18”)中的空白单元格和非空白单元格的数量? –

+0

@ DarrenBartrup-Cook是的,它总是从第4行开始,并将开始计算空白单元格,直到数据单元格为止。谢谢 – ramj

回答

1

可以easely达到使用worksheetfunction期望的结果,试试这个:

Sub test() 
    Dim iBlank&, iNonBlank&, rng As Range 

    Set rng = Range("O4:O" & [O4:O18].Find("*", , , , , xlPrevious).Row) 

    With WorksheetFunction 
     iNonBlank = .CountA(rng) 
     iBlank = .CountBlank(rng) 
    End With 

    MsgBox "Blank: " & iBlank & vbNewLine & "NonBlank: " & iNonBlank 
End Sub 
+0

是的,这可以计算空白和非空白单元格。但我想要的只是计算给定范围内的非空白单元格中空白的单元格。谢谢。 – ramj

+0

哦,没关系,看到更新后 – Vasily

+0

甜,简单:)感谢这! – ramj

1

我不是100%确定你的目标是什么。我知道你有一个从“O4”到“O18”的最大范围(它可以更小),并且你想从“O4”到该范围内的最后一个非空白单元格,计算空白和非空白细胞。如果它确实是你想要做什么,试试下面的代码(解释是在它):

Sub CountingBlankAndNonBlank() 

    Dim MyRange As Range 
    Dim LastRow As Long, TotalRange As Long 
    Dim CountBlank As Long, CountNonBlank As Long 

    'Find the last row with data in the Range("O4:O18") 
    LastRow = 19 - Range(Cells(18, 15), Cells(Rows.Count, 15).End(xlUp)).Count 

    'Set a range from "O4" to last cell with data 
    Set MyRange = Range(Cells(4, 15), Cells(LastRow, 15)) 

    'How many cells in my Range 
    TotalRange = LastRow - 3 

    'How many blank cells in my Range 
    CountBlank = MyRange.SpecialCells(xlCellTypeBlanks).Count 

    'How many non-blank cells in may range (Total - Blank) 
    CountNonBlank = TotalRange - CountBlank 

    MsgBox "There are:" & vbNewLine _ 
     & " - " & CountBlank & " blank cells" & vbNewLine _ 
     & " - " & CountNonBlank & " non-blank cells" & vbNewLine _ 
     & " - " & LastRow & " would be the lastrow" 

End Sub 
+0

它计算非空白单元格中的空白单元格。但即使我在列中添加了另一个非空白单元格,它也会返回相同的计数。谢谢 – ramj

+0

它的最后一行总是13,为什么? – ramj

+0

您是否复制了我的确切代码?它适用于我 –

0

计数空白单元格(在第二实施例和#N/A返回3如果所有小区空白):

=COUNTBLANK($O$4:INDEX($O$4:$O$18,LOOKUP(2,1/($O$4:$O$18<>""),ROW($O$4:$O$18))-3)) 

计数非空白细胞(返回6在第二实施例和1,如果所有小区空白):

=COUNTA($O$4:INDEX($O$4:$O$18,LOOKUP(2,1/($O$4:$O$18<>""),ROW($O$4:$O$18))-3)) 

从这里使用查找公式:What is this programmer doing with his Lookup function?

相关问题