VBAエキスパート(Excelスタンダード) 試験範囲その4-関数

公開日:2018年8月18日

このページでは、VBAエキスパート(Excelスタンダード)の 試験範囲のうち、「関数」について概要を説明します。

1.Excel VBAの関数とは

関数とは、決まった動作を行わせるために、そのプログラム言語やソフトウェア上に事前に用意されている便利なプログラム群をいいます。

例えば、ExcelにはSUM関数やAvrage関数など、加算や平均を計算する便利なプログラムが事前に備わっています。

同様にExcel VBA上にも、便利な関数が多数用意されています。ここでは、配列操作やデータ判定、日付操作のための関数について簡単にコメントします。

2.配列を操作するための関数

配列を操作するための関数には、「UBound関数」「LBound関数」「Spilit関数」などが存在します。

UBound関数は、指定した配列のうち、最も大きなインデックス番号を取得します。

LBound関数は、指定した配列のうち、最も小さなインデックス番号を取得します。

これらの関数は、For...Nextステートメントの繰り返し処理で、繰り返しの範囲を指定する場合によく利用されます。

次にSpilit関数は、文字列を指定した文字で区切り、配列形式にすることができます。

Spilit関数は「Spilit(文字列,区切り文字)」と引数を2つ指定して使用します。文字列には、配列にしたい文字列を設定し、区切り文字には文字列を区切る文字(記号)を指定します。

例えば、「東京,横浜,大阪,名古屋,福岡」という文字列を「,」で区切って配列にしたい場合には、「Spilit("東京,横浜,大阪,名古屋,福岡",",")」と記述します。

3.データを判定するための関数

データを判定するための関数には、「IsArray関数」「IsDate関数」「IsNumeric関数」などがあります。

IsArray関数は、配列かどうかを判定するための関数です。IsArray(データ)で、引数に設定した「データ」が配列かどうかを判定します。

IsDate関数は、日付かどうかを判定するための関数です。IsDate(データ)で、引数に設定した「データ」が日付かどうかを判定します。

IsNumeric関数は、数値かどうかを判定するための関数です。IsNumeric(データ)で、引数に設定した「データ」が数値かどうかを判定します。

Excel VBAだけでなく、プログラム言語を扱うための重要な要素の一つとして、「データ型」があります。

関数やステートメント、メソッドやプロパティを含む、プログラム言語の文法はデータ型を把握することが重要な鍵の一つになっているといっても過言ではありません。

例えば、変数を宣言する際には、データ型を宣言します。そして、変数に値を格納(代入)する場合には、その値のデータ型が宣言した変数のデータ型と一致していなければなりません。

例えば、「Dim i As Long」と宣言した変数iには、整数しか格納することができません。

例えば、iに格納したい値がワークシートのA列に縦に並んでいるとします。これらの値は数字で手作業で入力することになっていますが、手作業のため入力ミスの可能性があります。

このような時に便利な関数がIsNumeric関数です。各種ステートメントと組み合わせることで、A列の値すべてにIsNumeric関数を適用し、数値かどうかを判定することで、数値を入力していないミスを発見することができます。

4.日付を操作するための関数

日付を操作する関数には、「DateSerial関数」などがあります。

DateSerial関数は、DateSerial(年,月,日)で使用し、指定した年月日のシリアル値を取得することができます。

Excel上では、「2018年8月18日」でも「2018/8/18」でも日付と認識されれば、全てシリアル値に変換することができます。この2つは表示形式の違いだけで、どちらも同じ日付を表すため、シリアル値は同じになります。

従って、例えば、ことなる表示形式の日付を比較する場合や年と月と日が3つのセルに入力され、3つのセルで日付を表している場合などにDateSerial関数を使用すると便利です。