Excelで利用できるAREAS関数(エリアズ)のご紹介になります。

範囲選択したセルに含まれる領域の個数を返してくれます。連続したセル範囲、又は1個のセルが範囲とみなされます。
書式は、=AREAS(範囲)になります。
範囲は必ず指定します。セルまたはセル範囲の参照を指定します。
複数選択した範囲を選択することもできます。
複数のセル範囲を1個の引数として利用するときには、各々のセル範囲をカンマで区切り、のかっこ()で囲む必要があるんです。

AREAS関数

例1:下記の表の領域がいくつあるか調べます。表が3つあり、3つの表を区切るので「)」を二重にします。


「A7」に、=AREAS((A1:B4,D1:E4,G1:H4))と入力します。
結果は「3」となりました。表の領域が3個あると言う事ですね。

表の領域と別の表の領域が半角スペースで区切られている場合は、重なりを返してくれます。
「B2:C6」の領域の中から「B4:D4」の領域は重なりはいくつの領域かを調べるときには半角酢スペースで区切ってください!

結果は、「1」箇所になりますね!

AREAS関数は、VBAでも使います。
セル領域の操作;複数のセル領域(Areas Property)として利用できます。

シート上の複数のセル領域をVBAで扱う場合、個々の領域を取得するのにはRangeObjectの中のAreas Propertyを使うんですね。

たとえばなんですが、セル「A1:D3」「F7:G11」「I12:K17」の様な複数のセルの領域の行数を数えるときには、
MsgBox Range(“A1:D3,F7:G11,I12:K17”).Rows.Count
と入力すると、MsgBoxには3と表示結果が出ます。
これは1個目のセル「A1:D3」の範囲の行数で、3個のセルの領域の行は合計が出ないんですね。

このような時にはAreas Propertyを使って、個々のセル領域(RangeObject)について行数と列数を数える必要があるんでね。
次の例題には、3個のセルの領域の行数と列数の合計をMsgBoxに表示しています。
Sub Sample()
Dim i As Long, cntRow As Long, cntCol As Long

Range(“A1:D3,F7:G11,I12:K17”).Select
With Selection
For i = 1 To .Areas.Count
cntRow = cntRow + .Areas(i).Rows.Count
cntCol = cntCol + .Areas(i).Columns.Count
Next i
End With

MsgBox “行 : ” & cntRow & vbCrLf & “列 : ” & cntCol
End Sub

●補足説明●
Areas Collectionには、選択した範囲内のセルの領域に対応するRange Objectが含まれています。
Area ObjectというObjectはありません。

Areasプロパティ
Range ObjectのAreas Propertyには、数多くの選択範囲の中にある全てのセル範囲を表し、Areas Collectionを選びます。
Rangeの中のAddress文字列の,で区切られたセル範囲のRange Objectの Collectionになるんですね。
RangeObjectの中に、数多くのRange Objectが含まれている事になります。
単数形でのArea Objectはありません。

Areasコレクションから単一のRange Objectを取得するには、indexを使用します。
index番号は、領域が選ばれ順番に対応していきます。

RangeObjectに含まれてるAreas Collectionの要素の数は、Areas.Countで取ることができます。
Range(…).Countはセルの数ですが、Areas.CountはRangeオブジェクトの数になるんです。
1つのRangeObjectには、少なくとも1個のAreaが存在すので、Areas.Countのミニマムは1になります。

Range(“A1,A3:A5,A7”)
この場合、Areas.Countは3になります。
Areas(1)はRange(“A1”)、Areas(2)はRange(“A3:A5”)、Areas(3)はRange(“A7”)になります。

AREAS関数まとめです。

areasとはareaの複数形。面積になります。
指定した範囲のなかに、セルやセル範囲の領域がいくつあるかを求めるときにAREAS関数を利用します。
領域とは連続のセル範囲、又は1個のセルの事になります。
1個の引数に、複数のセル又はセル範囲を複数指定したい時は、()で囲んで指定します。
[参照]には複数の領域に付けた名前の定義も選択できるんです。名前の定義を使用すれば、引数にセル範囲選択するよりも楽になりますね。
たとえば、「商品一覧」という名前を付けていれば、関数は「=AREAS(商品一覧)」と入力できます。
先ほども解説しましたが、VBAでも使います。
VBAとは、Microsoftが提供するアプリケーションの一つで、Excel,Word,Accessで利用できるプログラミング言語なんです。
WordやExcelで良く使われていますので、「マクロ」という機能で触った事がある人も多いのではと思います。
VBAはMicrosoft Officeに付属されていて、個人のPC内に構築された環境で使用できるため、初めてのProgramming言語として会社などで自社用のフォームの作成ができます。