2013-12-18 120 views
0

我有一系列單元格,從列CA開始並轉到CX,我需要做的是計算該範圍內單元格數量不等於0的單元格,但一次只計算一行。Excel VBA水平計數

+2

= = COUNTIF(CA1:CX1,「<> 0」)'? –

+0

爲什麼你想使用VBA?正如@PeterAlbert提到你可以通過公式做到這一點? –

+0

您可能還需要小心如何處理空白? –

回答

0

這應該適合你。您需要根據您的數據更改環路範圍

Sub CountValues() 
    Dim lcell As Range 
    Dim c_row As Long 
    Dim values_counter As Long 
    c_row = 0 
    For Each lcell in Range("$CA$2","$CX$100") 
     If lcell.row <> c_row then 
      values_counter = 0 
      c_row = lcell.row 
     End If 
     If lcell.value <> 0 Then 
      values_counter = values_counter + 1 
     End If 
     If lcell.Column = Cells(1, "CX").Column Then 
      'Do Something with values_counter here 
     End If 
    Next lcell 

End Sub 
+0

LCELL不與任何東西 子CountValues() c_row = 0 對於每個LCELL在範圍填充( 「CA」 &ROWC, 「CX」 &ROWC) 如果lcell.Row <> c_row然後 values_counter = 0 c_row = lcell.Row 結束如果 如果lcell.Value <> 0,則 values_counter = values_counter + 1 結束如果 接着LCELL values_counter = values_counter/3 「結束如果結束 子 –

+0

你是什麼意思'lcell'沒有填充任何東西'lcell'是循環中'For Each' thr的當前單元格的引用只要「範圍」左移 - 右擊然後跳到下一行,當它碰到範圍中最右邊的一列時。 – engineersmnky

+0

它看起來像lcell.value總是空的。在單元格Ca2中我有一個Date。 –