この関数について
配列(特に2次元)の並び替えをいかに早く実行するかはプログラマにとって共通の課題です。ExcelVBA(マクロ)においてもデータ数が数万・数十万と増えるにつれて、シートやセル上だけでデータを加工することに速度の限界を感じて配列を採用した人は多いかと思います。たしかに配列はセルと比較してデータの代入・取得の速度は段違いの早さです。しかし「並べ替え」についてはExcelの標準機能に速度の優位性があります。この関数では配列をいったん仮のシートに貼り付け、並べ替えを実施した後、配列に格納し直します。
関数コピペ ~コードをクリックするだけでコピー完了!~
使い方 ①引数
引数名 | 型 | 参照 | 省略 | 内容 |
---|---|---|---|---|
target_2dim_array | Variant | ByRef | 不可 | 並び替えを実施したい「2次元」配列を指定します。 |
key_index | Long | ByVal | 可 | 並び替えのキーにする添え字(インデックス)を指定します。指定しない場合、配列2次元目の最小のインデックスが指定されたものとみなします。 |
header_sort | Boolean | ByVal | 可 | 配列の1レコード目を並び替えに含めるか否かを指定します。True・・含める、False・・含めない。省略した場合は、Trueとみなします。 |
ascending_order | Boolean | ByVal | 可 | True・・昇順、False・・降順 |
var_type_code | VbVarType | Byval | 可 | 配列の型を指定します。指定できる型は「CastArrayVariantToAnyting」を参照 |
使い方 ②戻り値
状態 | 型 | 内容 |
---|---|---|
正常 | Variant | 並べ替えを実施した配列をvar_type_codeで指定した型の配列へ変換して返します。 |
例外 | Variant | 例外は想定されていません。 |
エラー | Variant | エラー処理は想定されていません。 |
サンプルコード(クリックでコピー)
【結果】配列を並び替えることができました
サンプルコードを実行すると、まずは2次元配列にランダムな数値を格納し、イミディエイトウィンドウに内容を出力します。次に配列の1番目のカラム(列)を基準にして昇順に並び替え、再度配列の内容をイミディエイトウィンドウに出力します。
関数リファレンスにはコピペで使用可能な便利関数を多数掲載!
関数リファレンスでは私が開発の中で必要になったコード部品を汎用化・関数化して公開しています。この記事で紹介した関数以外にもコピペで利用できる関数を多数用意しています。検索窓から必要な機能を検索してみましょう!解説記事も続々公開中。
当サイトで公開している関数はすべて下記ライセンスのもとで配布しています。 Copyright (c) 2024 VBA.funcref Released under the MIT license The MIT LicenseCopyright Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated d...
Comment