VBA 配列を逆順に並べ替えます

 Hey guys, what's up?
 (みんな、元気にしてる~?)

 Let's have fun learning VBA today too!
 (今日も VBA を楽しんで勉強しましょ~!)

 え? なんでいきなり英語なのかって?
 なんとなく。ノリがいいから。それでは、始めましょ~。
 

配列要素を逆順に並べ替えます

 今回は 受け取った配列を逆順に並べ替える Revers関数 を作ってみます。
 つまり配列変数 x(i) に

  a, b, c, d, e

と並んでいる要素を

  e, d, c, b, a

と並べ直した配列 y(i) を作って返す関数です。こういうのは VBA にはもともと用意されてないので、モジュールにストックしておくと色々な場面で重宝しますよ。配列受け渡し なので、宣言セクションに Option Base 1 の記述を忘れないでください。「配列受け渡しは、とにかく Option Base 1」と覚えてしまいましょう。

 '配列要素を逆順に並べる関数

 Option Base 1

 Function REVERSE(x() As Variant) As Variant

  Dim n As Long, k As Long
  Dim ub As Long
  Dim y() As Variant

  'x のインデックス番号の上限値を取得します
  ub = UBound(x)

  'y の要素数を x に揃えます
  ReDim y(ub)

  For k = 1 To ub
   y(k) = x(ub - k + 1)
  Next k

  REVERSE = y()

 End Function

 次のサンプルコードでは REVERSE関数に (1, 2, 3) という配列を渡して、(3, 2, 1) を受けとります。

 'REVERSE関数のテストプログラム

 Sub TestReverse()

  Dim z As Variant
  Dim a(3) As Variant
  Dim j As Long

  a(1) = 1
  a(2) = 2
  a(3) = 3

  z = REVERSE(a())

  For j = 1 To 3
   Debug.Print z(j);
  Next j

 End Sub

 このプログラムを実行すると、イミディエイトウィンドウに

 3 2 1

が表示されます。REVERSE関数をワークシートで呼びだすときは、横に並んだセルを3つ選択した状態で、

=REVERSE({1,2,3})

と入力して、[Ctrl] + [Shift] + [Enter] を押してください。
 
 ≫ メニューに戻って他の記事も読んでね~♪

Google広告
スポンサーリンク
スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください