- ベストアンサー
エクセル VBA セルの個数を所得する
いつも皆様には大変お世話になっております。 早速の質問ですが、 A B C D E 1 2 123 3 123 4 123 5 123 6 7 123 とエクセルのセルがなっている場合の 上のB2から下のB7までのセルの個数を所得したいのです B8以降にも数字が入る場合があるのと間に空白が入る場合があるので 困っています。 B2のセルは固定となっているのでB2からの判別で問題ない状況です。 どうぞ皆様お知恵をお借りしたく思っておりますのでよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
質問が非常に不明確なのですが・・・ 所得?取得ですよね? 単にB2:B7のセルの個数をVBAで取得するなら MsgBox Range("B2:B7").Count B2:B7の空白でないセルの個数なら MsgBox Application.CountA(Range("B2:B7")) B7まででなくB2からB列のデータがある最後までのセル個数なら MsgBox Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count B2からB列のデータがある最後までの空白でないセル個数なら MsgBox Application.CountA(Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row))
その他の回答 (3)
> 上のB2から下のB7までのセルの個数を所得したいのです 「B2からB7まで」と言われているので、セル数を数えたいなら「7-1」で6で得られますから、 多分そんなことではなくて、データの入ったセル数を数えたいのでしょうね。 (質問文には、明確には書かれていませんが...) VBAなど使わなくても(やり方がわからないと、何でもVBAは要注意です) =COUNT($B$2:$B$7) で可能です。 COUNT関数は指定した範囲内のデータがある個数を返します。 ただし、「0」が入っていると数字なので、カウントしてしまいます。
- suz83238
- ベストアンサー率30% (197/656)
VBAでなく関数でできます。 =COUNTA(B2:B7) で空欄以外のセルをカウントします。 VBAでもできますが、必要を感じません。 Sub xxx() Set r = ActiveSheet.Range("B2:B7") n = Application.WorksheetFunction.CountA(r) MsgBox n End Sub
お礼
実はVBAの一部の部分にカウントした個数を使いたいと思っていたため VBAとしていました。 説明不足ですいません。
- higekuman
- ベストアンサー率19% (195/979)
あえて意地悪な回答をすると、B2からB7までのセルの個数は6個です。 間に空白があろうが、B8に数字が入ろうが、B2からB7までのセルの個数は6個です。 もし、B列で数値が入っているセルの個数を数えるなら、=COUNT(B:B) です。 もし、B列で空じゃないセルの個数を数えるなら、=COUNTA(B:B) です。 数えたい対象のセルの条件をはっきりさせましょう。
お礼
早速のお返事ありがとうございます。 簡単に書いてしまいましたが 実はB1からB20まではいろいろなデータが入っているために 困っていました・・・ もうちょっと詳しく書けばよかったですね・・・すいません
お礼
取得ですね・・すいません 3番目のMsgBox Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count を使わせてもらいます。 &の使い方がいっつも悩んでしまいます・・・ もうちょっと勉強がんばります・・・・ ぴったりの回答ありがとうございました。