Softex CelwareTech Blog
Excel VBA2026-05-28

一次元配列から値の位置を取得するExcel VBA汎用関数 GetNumFromArray1D

指定した値が一次元配列の何番目にあるかを調べ、見つからない場合は0を返すExcel VBA汎用関数を解説します。

Excel VBA汎用プロシージャ配列Variant検索

概要

GetNumFromArray1Dは、指定した値が一次元配列の何番目にあるかを調べる関数です。見つかった場合は要素番号を返し、見つからない場合は0を返します。

入力規則リスト切替スピンボタンでは、現在セルに入っている値が入力規則リストの何番目かを調べるために使っています。

使う場面

  • 一次元配列の中から値の位置を探したい
  • 入力規則リスト内の現在値の位置を知りたい
  • 見つからなかった場合に0で分岐したい
  • 配列上の簡単な検索処理を共通化したい

使用例

Dim list(1 To 3) As Variant
list(1) = "未対応"
list(2) = "対応中"
list(3) = "完了"

MsgBox GetNumFromArray1D("対応中", list)

コピー可能な実装コード

GetNumFromArray1D.bas
vba
コードを読み込み中...

初心者向けコード解説

最初にIsEmpty(Array1D)で配列が空かどうかを確認します。空の場合はそのまま終了するため、戻り値は初期値の0になります。

次にUBound(Array1D, 1)で配列の最大要素番号を取得し、For I = 1 To Nで先頭から順番に比較します。

Value = Array1D(I)が一致したら、その番号をOutputへ入れてExit Forで検索を終えます。最後にGetNumFromArray1D = Outputで結果を返します。

関連記事

注意点

  • この実装は1始まりの一次元配列を前提にしています。
  • 0始まり配列を渡す場合は、先にConvArray1D_Start1で変換します。
  • 見つからない場合は0を返します。呼び出し側で0の意味を決めておく必要があります。
  • 大量データの高速検索ではなく、小さな候補リスト向けの簡易検索です。

軽いまとめ

GetNumFromArray1Dは、一次元配列内の現在位置を知るための小さな部品です。入力規則リストや候補リストのように、順番に意味がある配列を扱うときに使いやすくなります。

この技術で業務改善しませんか?

Excel VBA・GAS・Webアプリで業務の自動化ツールを開発しています。 「こんなことできる?」というご相談だけでもお気軽にどうぞ。

無料相談はこちら →