Microsoft 製品に組み込まれている Visual Basic の実装。
> エクセルVBA内で、COUNTIF関数を使い、指定された範囲に
> 値が0以上のセルが何個あるかをカウントさせたいのですが、うまくできません。
> 調べたいセルは、ワークシート上に7行飛びに離れて存在するため、
> まずUNION関数を使いセルを結合させ、その結合した配列を、
> COUNTIF関数の引数1に指定して実行しましたが、
> 『実行時エラー1004 COUNTIFプロパティを取得できません』、
> もしくは『実行時エラー13 型が一致しない』となります。
COUNTIF 関数の第 1 引数に 2 つ以上のセル領域を渡すことは出来ません。
> j = Cells(Rows.count, 1).End(xlUp).Row
>
> For i = 7 To j Step 7
> If MyRng Is Nothing Then
> Set MyRng = Cells(i, 6)
> Else
> Set MyRng = Application.Union(MyRng, Cells(i, 6))
> End If
> Next i
そこまで出来ているのであれば、普通に If 文で
「各セルの値が 0 を超えている(≠0以上)」か否かを判定し、
True の場合は 変数 cnt に 1 ずつ足すようになされば充分なのでは。
j = Cells(Rows.Count, 1).End(xlUp).Row
cnt = 0
For i = 7 To j Step 7
Set MyRng = Cells(i, 6)
Debug.Print MyRng.Address & vbTab & MyRng.Value
If MyRng.Value > 0 Then
cnt = cnt + 1
End If
Set MyRng = Nothing
Next i