Excel Office スクリプト 配列の使い方

2021年7月7日

Office スクリプトにおける配列の使い方を紹介します。

解説

配列では複数の変数をまとめて一つの変数として扱います。

配列内の個々のデータのことを「要素」といい、

配列のことを「配列変数」と呼ぶこともあります。

配列に対する操作を列挙していきます。

量が多いですが、覚える必要はありません。

プログラミング全体に言えますが、

必要な際に検索再サイトなどで探すのが現実的です。

配列の宣言

空の内容は次のように宣言します。(赤字は適宜変更

let 配列変数: 要素のデータ型[] = [];

内容の初期化を行う場合は要素の内容をカンマ区切りで指定します。

let 配列変数: 要素のデータ型[] = [,区切りで要素を指定];
コード例

例えば次のように宣言すると、

let array: string[] = ["まぐろ","さんま","しゃけ"];

このような構造の配列になります。

要素のインデックス要素の値
0まぐろ
1さんま
2しゃけ

インデックスは要素にアクセスするための0から始まる連番です。

読み取り専用

データ型の前にreadonlyを付けると定数のように変更不可能な配列になります。

let 配列変数: readonly 要素のデータ型[] = [,区切りで要素を指定];

要素の取得

指定インデックスの要素を取得

次のようにインデックスを利用して値を取得します。

配列変数[インデックス];

先頭の要素を取得

インデックスに0を指定すると先頭の指定になります。

配列変数[0];

末尾の要素を取得

インデックスに変数名.length-1を指定すると先頭の指定になります。

配列変数[配列変数.length - 1];

すべての要素を取得(ループ)

ループで全要素を繰り返します

基本形(forでカウンターを利用する)
for (let カウンター変数: number = 0; カウンター変数< 配列変数.length; カウンター変数 = カウンター変数 + 1){
  配列変数[カウンター変数]; //現在の繰り返しの要素を取得
}
コード例

カウンター変数を繰り返し内で利用する場合に有用です。

途中で離脱する場合があり、外でもカウンター変数にアクセスする場合は

forの外のブロック(手前)でカウンター変数を宣言(let)する必要があります。

(途中で離脱しない場合はlengthと同じため無意味)

for-of(カウンターを利用しない)

forと同じ処理を行います。

カウンターを利用しない場合はこちらの方が簡潔に表現できます。

for (let 要素変数 of 配列変数){
  要素変数; //現在の繰り返しの要素を取得
}
コード例

要素を変更

インデックスを指定

次のようにすると指定インデックスの要素を変更します。

配列変数[インデックス] = 指定値;

先頭も取得と同様に可能です。

配列変数[0] = 指定値;

末尾も取得と同様に可能です。

配列変数[配列変数.length - 1] = 指定値;

すべての要素を変更

次のようにすると配列全体を変更します。

配列変数 = [,区切りで要素を指定];
コード例

配列に要素を追加

末尾に追加

末尾に要素を追加するには次のコードを利用します。

配列変数.push(末尾に追加する要素);
コード例

先頭に追加

先頭に要素を追加する場合はunshiftメソッドを利用します。

配列変数.unshift(先頭に追加する要素);
コード例

指定位置に追加

指定位置に要素を追加する場合はspliceメソッドを利用します。

指定位置より後ろの要素は追加した分、インデックスが動きます。

配列変数.splice(追加するインデックス位置,0,指定位置に追加する要素);
コード例

配列の要素数を取得

.lengthメソッドを利用します。

配列変数.length;
コード例

要素の削除

全要素を削除

次のようにすると配列を空にします。

配列変数 = [];

指定インデックスの要素を削除

spliceメソッドを利用します。

配列変数.splice(削除する開始インデックス,削除する要素数);

次の例ではインデックス1(2個目の要素)から3個の要素を削除します。

コード例

先頭の要素を削除

shiftメソッドを利用します。

配列変数.shift();
コード例

末尾の要素を削除する

popメソッドを利用します。

配列変数.pop();
コード例

配列の結合

concatメソッドを利用します。

結合後の配列変数 = 配列変数.concat(後ろに追加する配列変数);
コード例

要素の値からインデックスを取得

最初に一致

indexOfメソッドを利用します。

配列変数.indexOf(検索する値);

検索する値に「しゃけ」を指定していますが、

「しゃけ」はインデックス1と3の二つあります。

indexOfメソッドは最初の方を取得するため結果は1になります。

コード例

最後に一致

lastIndexOfメソッドを利用します。

配列変数.lastIndexOf(検索する値);

検索する値に「しゃけ」を指定していますが、

「しゃけ」はインデックス1と3の二つあります。

lastIndexOfメソッドは最後の方を取得するため結果は3になります。

コード例

最大値・最小値を取得

Math.max.applyメソッドとMath.min.applyメソッドを利用します。

配列の要素はnumber型などの数値である必要があります。

Math.max.apply(配列変数);
Math.min.apply(配列変数);
コード例

次の記事

多次元配列の使い方

関連記事

Excel Office スクリプトの記事一覧