2016-08-15 175 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?