「AREAS関数って何に使うの?」と思っている方は多いのではないでしょうか。
実際、単体で使う場面はあまり多くありません。でもINDIRECT関数やINDEX関数と組み合わせると便利です。名前定義の数を自動カウントしたり、複数範囲を動的に切り替えたりできます。
AREAS関数の仕組みと実務で役立つ組み合わせパターンを、この記事でまとめて解説します。
ExcelのAREAS関数とは?読み方と基本の仕組み
AREAS関数は、指定した参照に含まれるエリア(セル範囲)の個数を返す関数です。
読み方は「エリアズ関数」です。英語の「area(領域)」の複数形がそのまま関数名になっています。Excel 2016以降のすべてのバージョンとMicrosoft 365で使えます。
ここで大事なポイントが1つあります。AREAS関数が数えるのはセルの個数ではなく、エリア(範囲の塊)の個数です。
たとえば =AREAS(A1:C10) は、どれだけセルが含まれていても結果は「1」です。A1:C10という1つのエリアしかないからです。
一方、=AREAS((A1:C3,D5:F8)) は「2」を返します。カンマで区切られた2つのエリアがあるからです。
NOTE
「セルの個数」を数えたいときは、行数ならROWS関数、列数ならCOLUMNS関数を使います。AREAS関数とは役割が異なるので注意してください。
AREAS関数の書き方(構文と引数)
基本構文
=AREAS(参照)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 参照 | 必須 | エリア数を数えたいセル参照・名前定義・範囲の集合 |
参照には、セル範囲・名前定義・複数範囲をまとめたものを指定できます。
複数の離れた範囲を1つの引数にまとめるときは、全体を括弧で囲むのがルールです。=AREAS((A1:B2,C3:D4,E5:F6)) のように書きます。内側にカンマ区切りの範囲を並べ、外側の括弧で1つの参照にまとめる形です。
TIP
括弧を付け忘れると「引数が多すぎます」というエラーになります。AREAS関数の引数は1つだけなので、複数範囲は必ず括弧でまとめてください。
ExcelのAREAS関数の基本的な使い方
連続したセル範囲(エリアは1つ)
=AREAS(A1:G5) → 1
A1:G5は1つの連続した範囲なので、結果は「1」です。範囲のサイズに関係なく、連続していれば常に1を返します。
離れた複数のセル範囲(エリアは複数)
=AREAS((A1:B3,D1:E3,G1:H3)) → 3
カンマで区切った3つの範囲をまとめて渡しています。エリアが3つあるので、結果は「3」です。
単一セルもエリアとしてカウントされる
=AREAS((A1,B5,C10)) → 3
1つのセルも「1つのエリア」として数えられます。A1・B5・C10はそれぞれ独立したエリアです。そのため結果は「3」になります。
名前定義を指定する
名前の定義で「売上データ」という名前をA1:A10に割り当てている場合です。
=AREAS(売上データ) → 1
名前定義が参照している範囲が1つなら「1」を返します。
AREAS関数の実務活用パターン
AREAS関数は単体だとシンプルすぎて使いどころが少ない関数です。でも他の関数と組み合わせると、実務で役に立つ場面が出てきます。
パターン1: INDIRECT関数と組み合わせて名前定義の数を数える
名前の定義で「1月」「2月」「3月」など月別のデータ範囲を作っているとします。いくつの月データがあるか自動カウントする例です。
=AREAS(INDIRECT("1月,2月,3月"))
NOTE
この方法は名前定義が存在しない場合に
#REF!エラーになります。名前の定義が正しく設定されているか事前に確認してください。INDIRECT関数は文字列をセル参照に変換する関数です。
パターン2: INDEX関数の領域番号と組み合わせて動的にデータを切り替える
INDEX関数には「領域番号」という引数があります。複数の範囲から何番目を使うかを指定できる引数です。AREAS関数で領域の総数を求め、最後の領域のデータを取り出す例を見てみましょう。
=INDEX((A1:A10,B1:B10,C1:C10), 1, 1, AREAS((A1:A10,B1:B10,C1:C10)))
この数式は3つの範囲の中から最後(3番目)の範囲の1行1列目を返します。範囲を追加・削除しても、AREAS関数が自動的に総数を返します。そのため数式を書き換える必要がありません。
パターン3: 入力済みシート数のカウント
月別シートで「1月」から「12月」まで名前定義を作っているとします。入力済みのシートだけ名前定義を追加していく運用の例です。
=AREAS(INDIRECT("1月,2月,3月,4月")) → 4
名前定義を追加するたびにINDIRECT関数の文字列を更新します。するとAREAS関数が入力済みの月数を自動で返してくれます。
パターン4: エラーチェックで範囲の整合性を確認する
複数の名前定義がすべて存在するかどうかを確認するチェック式です。
=IF(AREAS(INDIRECT("売上,仕入,利益"))=3, "OK", "名前定義が不足")
3つの名前定義がすべて存在していれば「3」が返り、「OK」と表示されます。1つでも欠けていれば #REF! エラーになります。IFERROR関数で囲むとより安全です。
=IFERROR(IF(AREAS(INDIRECT("売上,仕入,利益"))=3, "OK", "不足"), "名前定義にエラーあり")
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
#REF! | 存在しない名前定義を参照した | 名前の定義が正しく設定されているか確認する |
#VALUE! | 参照に無効な値を指定した | セル範囲または名前定義を正しく指定する |
| 引数が多すぎます | 複数範囲を括弧でまとめていない | =AREAS((A1:B2,C3:D4)) のように全体を括弧で囲む |
| 常に1が返る | 連続範囲を1つだけ指定している | 複数範囲をカンマ区切りで指定しているか確認する |
TIP
AREAS関数で最も多いミスは「括弧の付け忘れ」です。複数の範囲を指定するときは、外側の括弧を忘れていないか必ず確認してください。
似た関数との違い・使い分け
AREAS関数が「数えるもの」の違い
AREAS関数と混同しやすい関数がいくつかあります。それぞれ「何を数えるか」が異なります。
| 関数 | 数えるもの | 例 | 結果 |
|---|---|---|---|
| AREAS | エリア(範囲の塊)の個数 | =AREAS((A1:B3,D1:E3)) | 2 |
| ROWS | 行数 | =ROWS(A1:A10) | 10 |
| COLUMNS | 列数 | =COLUMNS(A1:E1) | 5 |
| COLUMN関数 | 列番号 | =COLUMN(C1) | 3 |
| ROW関数 | 行番号 | =ROW(A5) | 5 |
どの関数を使うべき?
- エリア(範囲の塊)がいくつあるかを知りたい → AREAS関数
- 行数を数えたい → ROWS関数
- 列数を数えたい → COLUMNS関数
- 特定セルの列番号を知りたい → COLUMN関数
- 特定セルの行番号を知りたい → ROW関数
「エリア数」と「セル数」の違いを押さえておけば、使い分けで迷うことはありません。
まとめ
AREAS関数は、参照に含まれるエリア(セル範囲の塊)の個数を返す関数です。
=AREAS(参照)でエリアの数を取得できる- 複数範囲を指定するときは括弧を二重にするのがポイント
- INDIRECT関数と組み合わせると、名前定義の数を自動カウントできる
- INDEX関数の領域番号と連携して、動的にデータを切り替えられる
- 「セルの個数」を数えたいときはROWS関数やCOLUMNS関数を使う
ニッチな関数ですが、名前定義を活用した集計シートや動的な参照切り替えで活躍します。ぜひ試してみてください。
