• ベストアンサー

特定の範囲内に空白セルがいくつあるかを数えるマクロを作りたいのですが。

B1セルからB500セルまでの間に、 空白セルがいくつあるかを数えるマクロを作りたいのですが…。 自分では作れません。 作ってください!!! お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

みなさんの回答のように関数でできますが、無理やりマクロにすると、こんなものですか。最初はワークシート関数を使っています。2つ目は関数を使わず、数えています。結果をC1、C2に書き出します。 参考にして下さい。 Sub KuuhakuCount() Range("C1") = WorksheetFunction.CountBlank(Range("B1:B500")) End Sub Sub KuuhakuCount2() Dim rg As Range 'セル Dim ct As Long 'カウンタ For Each rg In Range("B1:B500") ct = ct + Abs(rg = "") '空白なら件数をカウント Next Range("C2") = ct End Sub

iillyy
質問者

お礼

2つ目の方が「!!!」な感じ。 ありがとうございました。

その他の回答 (2)

  • Masato_a
  • ベストアンサー率21% (13/60)
回答No.2

エクセルはあんまり詳しくないですが、 500-Counta(B1:B500)とかは?

iillyy
質問者

お礼

お返事ありがとうございます・・・ でも、実はマクロで作りたかったー。 またいつか、お世話してください。

  • trytrytry
  • ベストアンサー率37% (13/35)
回答No.1

式ではだめでしょうか? マクロより式を使った方が早いと思いますよ。 式 =COUNTIF(B1:B500,"") 式はだめで、計算用のセルがある場合 Cells(501,2) = "=COUNTIF(B1:B500," & Chr(34) & Chr(34) & ")" 上記は、B501セルに"=COUNTIF(B1:B500,"")"を入力の意味 で、cells(501,2)の値を参照すれば値が取れます。 値が邪魔なら、取得した後に cells(501,2) = "" を実行し、クリアする。 一時的にもセルを使用できない場合はループ(For Next)を使って 地道に勘定するしか思いつかないです。 cnt = 0 for i = 1 to 500 if cells(i,2)="" then cnt = cnt + 1 next もっと効率の良い関数があるのかもしれませんが...

iillyy
質問者

お礼

試してみます… ありがとうございました。

関連するQ&A