はじめに
この記事ではExcelで小数点以下の桁が存在する数値と整数が混在するデータが入力されたセル範囲の中から整数が入っているセルの個数を求める数式について解説します。
空白が混ざっているケースにも対応できるようにしています!
整数が入っているセルの個数をカウントする数式(空白なし)

それでは早速みていきましょう!
次の画像をご覧ください!

<例に使用されている数式>
=SUMPRODUCT(N(B2:B14=INT(B2:B14)))

1から5の整数があるので整数は5個
正しくカウントされていますね!
どういう仕組みになっているんですか?

配列数式を使っているのでこのブログで扱うにはちょっと複雑なんですが…
B2:B14=INT(B2:B14)
カウントは主にこの部分の数式で行っています。
INT関数で整数に変換した値と変換前の値が一致するかどうか、TRUEかFALSEで返します。

たしか論理式っていうんですよね

そうです!
そしてN関数を使って結果のTRUEは1、FALSEは0の数値に変換しています。

たとえば
『TRUE,FALSE,TRUE』
という場合には
『1,0,1』
になる理解で合っていますか?

合っていますよ!
あとはSUMPRODUCT関数で配列の足し算をしている…
簡単に言うとこんな感じになります。

ただ、この数式は空白データを含む場合には間違った結果を返します。
空白や文字列などを含む場合に対応できる数式を次に紹介しますね!
整数が入っているセルの個数をカウントする数式(空白を除外)

<例に使用されている数式>
=SUMPRODUCT(N(B2:B16=INT(B2:B16))*ISNUMBER(B2:B16))

セルD2の結果が間違っていますね!

これが先に紹介した数式の弱点です。
空白はINT関数で変換した値と変換前の値が同じとみなされ、
論理式はTRUEが返ります。

TRUEは1に変換されるんでしたよね。
なるほど、それで整数5個に空白2個の合計7個になっているんですね。

そこに対応するのが『 *ISNUMBER(B2:B16) 』の部分です。
データが数値ならばTRUE、そうでなければFALSEの配列を乗算することで
数値以外をカウントの対象外にすることができます。

1(INT前後が一致)✕0(数値ではない)=0
ということでしょうか

そのとおりです!
その計算がセルごとに行われているということですね!

むむむ…
難しいですけど、こんな方法があるんですね
良い勉強になりました

理屈は少しずつ分かるようになっていきましょう
おわりに
今回はTwitterで見かけたデータの中にある整数の数をカウントしたいを実現する数式について解説しました。
経理の業務では使うシーンがあまり思い浮かばないです。
個数単位の購入品と小数点以下のあるkg単位の購入品のデータ数を求める…などでしょうか。
もしかしたら整数の個数だけでなく、整数の合計を知りたいケースなどもあるのかもしれませんね。

<例で使用している数式>
=SUMPRODUCT(N(B2:B16=INT(B2:B16))*ISNUMBER(B2:B16)*B2:B16)
その場合、上記のような数式になりそうです。
最後に『 *B2:B16 』を付け加えることで、整数1をセルの数値に置き換えています。
(これもシノさんとキュウさんに説明してもらえば良かったですね…)
最後までお付き合い頂き、ありがとうございました!
当ブログはエクセル関数の擬人化キャラクター記事をメインコンテンツとしています!
よろしければこちらの記事もどうぞ~!
コメント