自分を活かして 相手を活かして 今を活かす

【解決】Excelやスプレッドシートで、動的に最終行の行番号を取得する〜空白セルに関数が入っている場合にも対応〜

こんにちは、おかちゃんせんせいです!

ExcelやGoogleスプレッドシートでデータ入力をしていて、場合によっては悩みの種になることがあります。

それは、
最終行の行番号を取得したり、入力しているデータ数を関数で正確に取得できないときがある問題
です。

◆お知らせ◆

【まとめ記事】

現在、これまで書いてきた記事をテーマ別にまとめています。

詳しくはこちらから

なぜか欲しい数値が取得できない問題

なぜCOUNTA関数が思い通りに作動しないのか?

データ総数や最終行の情報が必要になるケースがあるかと思います。

その際に、データ総数や最終行であればCOUNTA関数で算出できます。
しかし、最終行を求める場合に途中に空白があるとCOUNTA関数では不十分のため、最終行が数値や文字列であっても対応できるように工夫してあげる必要があります。

その方法を考えた天才的な方法が下記リンク先に載っていますので、ぜひご確認ください!
MAX関数やMATCH関数の特性を活かした傑作です!

COUNTA関数やMAX+MATCH関数でもなぜかバグる!?

上記の方法でデータの総数や最終行は算出可能ですが、実は例外で計算結果がバグる場合があります。

下のケースをご確認ください。

パターン1も、パターン2も、パターン3も。
見た目は一緒で6行目までデータが入っている感じです。

けれど、中身はそれぞれ異なり、下記のようになっています。

パターン1:直接データ入力
パターン2:IF関数が1000行目まで設定されている
パターン3:ARRAYFORMULA関数(Googleスプレッドシート限定)

右側の表を見ていただければ分かりますが、COUNTA関数とMAX+MATCH関数で最終行を求めようとすると、関数が入っている状態だと見た目より余分にカウントされてしまいます。

ちょっと自分の知識ではMAX+MATCH関数が+1だけズレるのかはよく分かりませんが、ExcelとGoogleスプレッドシートで同様の結果になるため、何らかの理由はあるかと思います。

つまり、空白セルに関数が入っていると計算結果がバグってしまうので、データ行以外に関数が入っている場合には、他の関数で最終行を算出する必要があります。

他の関数とは、SUMPRODUCT関数になります。

SUMPRODUCT関数とは?

範囲または配列に対応する要素の積を合計した結果を返します。

COUNTIFS関数のように複数条件で絞り込むことができ、かつ、空白セルに関数が入っていてもカウントしないSUMPRODUCT関数を活用する。

したがって、データの個数や最終行を求める際にはSUBPRODUCT関数を用いることで、空白セルに関数があってもなくても正確な値を計算することがわかります。
※ただし、データ行の途中に空白セルがない場合。

=SUMPRODUCT((A:A<>””)*1)

まとめ

  • COUNT関数に類似する関数は、空白セルに関数が入っているとそれを空白以外のものとしてカウントしてしまう。
  • SUBPRODUCT関数を用いることで、空白セルに関数があるかないかに関わらず正確にデータ数・最終行をカウントできる。
  • ただし、データの途中に空白があるとカウント対象外となるので要注意。
  • 上記については、ExcelやGoogleスプレッドシートに共通で適用される。
【データ集計】ExcelとGoogleスプレッドシートを使い分けるポイントとは?〜やりたいことを整理してみる〜

【特集】独学では開発言語の習得が難しいと感じている方向け

一つ目は、
侍エンジニア塾
です。


VBAやJavaScript関連でネット検索したことがある方であれば、一度は見かけたことある名前かと思います。
JavaやPython、C言語、VBA、JavaScriptなど、様々なプログラミング言語をオンラインで習得するためのサービスを提供しているところなので、自分が習得したい言語がもしありましたら、無料体験レッスンを受けてみると良いかもしれません。

そこでプロ講師に相談をして、習得するプログラミング言語に対して直接質問するのがベストです。

二つ目は
ストアカ
です。


こちらはあえてプログラミング学習専門ではなく、もっと手軽に学ぶ機会を得るサービスをチョイスしてみました。
VBAやJavaScriptなどのワンツーマンレッスンを開催している講師が多数登録しているので、まずは出費を抑えて学習したいと考えている方にお勧めです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA