【エクセルVBA】乱数生成と配列操作

当ページのリンクには広告が含まれています。

スポンサーリンク

エクセルVBAにて 乱数生成と配列の操作 について解説します

クリックしてジャンプ

乱数を生成

Rnd関数は

0以上1未満のランダムなSingle型の値を返します

Randomizeステートメントと組み合わせて使うことで、毎回異なる乱数を生成できます

Randomize ' 乱数ジェネレータを初期化
Dim randomNumber As Single
randomNumber = Rnd ' 0以上1未満の乱数を生成
MsgBox "生成された乱数: " & randomNumber

乱数ジェネレータのシード値を設定

Randomizeステートメントは

乱数ジェネレータのシード値を設定します

シード値にはTimer関数を使うことが多く

プログラムの実行ごとに異なる乱数シーケンスが得られます

Randomize Timer ' 現在時刻をシード値として使用

配列を作成

Array関数は

引数に指定した値から配列を作成します

作成された配列はVariant型であり、異なるデータ型の値を含むことができます

Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
MsgBox "配列の第1要素: " & myArray(0)

配列の最大インデックスを返す

UBound関数は

指定された配列の最大インデックス(要素数-1)を返します

配列のサイズを知ることができるため、配列をループ処理する際に有用です

Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
MsgBox "配列の最大インデックス: " & UBound(myArray)

配列の最小インデックスを返す

LBound関数は

指定された配列の最小インデックスを返します

VBAでは配列のインデックスが通常0から始まるため

この関数の戻り値はほとんどの場合0ですが

Option Base 1を使用している場合や

動的配列を特定のインデックスから始めた場合に便利です

Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
MsgBox "配列の最小インデックス: " & LBound(myArray)

配列のサイズを変更

ReDimステートメントは

動的配列のサイズを変更します

Preserveキーワードを使うことで

既存の配列データを保持したままサイズ変更が可能です

Dim myArray() As Integer
ReDim myArray(5)
ReDim Preserve myArray(10) ' Preserveキーワードで元のデータを保持しつつサイズ変更
MsgBox "配列の新しいサイズ: " & UBound(myArray) + 1

文字列を区切り文字で分割して配列に格納

Split関数は

第一引数に指定された文字列を第二引数に指定された区切り文字で分割し

結果を配列として返します

文字列データを配列に変換する際に役立ちます

Dim myArray() As String
myArray = Split("Apple,Banana,Cherry", ",")
MsgBox "配列の第2要素: " & myArray(1)

配列の要素を結合して文字列にする

Join関数は

配列の要素を指定された区切り文字で結合し、1つの文字列として返します

配列のデータを文字列で表現したい場合に使用されます

Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
Dim myString As String
myString = Join(myArray, ", ")
MsgBox "結合された文字列: " & myString

配列かどうかを判定

IsArray関数は

指定された式が配列であるかどうかを判定します

変数の型を確認する際に役立ちます

Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
If IsArray(myArray) Then
    MsgBox "変数は配列です。"
Else
    MsgBox "変数は配列ではありません。"
End If

要素を初期化

Eraseステートメントは

指定された配列の要素を全て初期化します

動的配列の場合、サイズも0になります

配列をリセットしたい時に使用します

Dim myArray() As Integer
ReDim myArray(5)
Erase myArray ' 配列の要素を全て初期化

スポンサーリンク

クリックしてジャンプ