Partition関数
Partition関数は、VBA関数の中で制御・入出力関数に分類される関数です。
目次
Partition関数とは
Partition関数は、ある数値が、区切られた複数の範囲のうち、どの範囲に含まれるかを示すバリアント型 (内部処理形式 String の Variant) の文字列を返します。
構文 | Partition(number, start, stop, interval) | |
---|---|---|
引数 | 省略 | 説明 |
number | × | 範囲に対して評価する整数を指定します。 |
start | ● | 対象となる範囲全体の先頭となる整数を指定します。0 未満の整数を指定することはできません。 |
stop | ● | 対象となる範囲全体の末尾となる整数を指定します。名前付き引数 stop には、名前付き引数 start に指定した整数よりも大きい整数を指定しなければなりません。 |
Partition 関数は、名前付き引数 number に指定した整数が属する特定の範囲を算出し、その範囲を示すバリアント型 (内部処理形式 Stringの Variant) の文字列を返します。Partition 関数は、クエリーの作成に特に役立ちます。たとえば、受注番号の各範囲 (1 ~ 1,000、1,001 ~ 2,000 など) に含まれる注文の数を示す選択クエリーを作成することが可能です。
次の表では、名前付き引数 start、stop、および interval の値の組み合わせを 3 とおり示し、その結果得られる範囲を示しています。「最初の範囲」の列と「最後の範囲」の列は、Partition 関数が返す文字列を示しています。範囲を示す文字列は、範囲内の最小値と最大値をコロンで区切って、最大値 : 最小値の形式で返されます。
start | stop | interval | 最初の範囲の直前 | 最初の範囲 | 最後の範囲 | 最後の範囲の直後 |
---|---|---|---|---|---|---|
0 | 99 | 5 | " :-1" | " 0: 4" | " 95: 99" | " 100: " |
20 | 199 | 10 | " : 19" | " 20: 29" | " 190: 199" | " 200: " |
100 | 1010 | 20 | " : 99" | " 100: 119" | " 1000: 1010" | " 1011: " |
この表の 3 行目には、名前付き引数 start と名前付き引数 stop で定義される数列が名前付き引数 interval の値で等分できない場合の結果が示されています。名前付き引数 interval の値は 20 ですが、最後の範囲は名前付き引数 stop に指定された整数値で終わっているため、その長さは 11 になっています。
Partition 関数は、コロンの両側に名前付き引数 stop で指定した整数の桁数に 1 を加えた文字数を設定し、先頭に十分なスペースを持った範囲を返します。こうすることによって、何回か他の数値を指定して Partition 関数を実行しても、同じ文字数の文字列が返されるので、その後の並べ替え処理で適切に文字列を処理することができます。
名前付き引数 interval に 1 を指定すると、名前付き引数 start および名前付き引数 stop の値に関係なく、範囲は number:number として返されます。たとえば、名前付き引数 number に 100 を指定し、名前付き引数 stop に 1,000 を指定した場合に、名前付き引数 interval に 1 を指定すると、" 100: 100" という範囲が返されます。
引数のいずれかに Null 値を指定すると、Null 値が返されます。
Partition関数のサンプルコード
次の例では、運送費 (Freight) フィールド を含む、注文 (Orders) テーブルがあるものと仮定します。運送費を分類し、それに対応する注文件数を数える選択プロシージャを作成できます。ここでは、Partition 関数と SQL の Count 関数を使って、運搬費を分類しています。まず、Partition 関数で各範囲を設定し、その後 SQL の Count 関数で各範囲内の注文件数を数えます。この例では、Partition 関数の引数 start を 0、stop を 500、interval を 50 に設定します。したがって、最初の範囲は 0:49 で、上限 500 までの範囲が設定されます。
Sub Sample
SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,
Count(Orders.Freight) AS Count
FROM Orders
GROUP BY Partition([freight],0,500,50);
End Sub
実行結果
解説
制御・入出力関数一覧
関数名 | 内容 |
---|---|
Choose | 数値で指定した式の値を返します。 |
IIf | 式の結果により2つの引数のうち1つを返します。 |
Input | ファイルから指定した文字数の文字列を読みこんで返します。 |
InputB | ファイルから指定したバイト数のデータを読み込んで返します。 |
InputBox | ダイアログボックスにメッセージを表示しテキストボックスに入力した値を返します。 |
MsgBox | ダイアログボックスにメッセージを表示します。 |
Partition | 指定した数値の範囲が属する文字列を返します。 |
Spc | 指定した数のスペースを挿入します。 |
Switch | 条件式を評価し、真(True)の場合に式を返します。 |
TypeName | 変数に関する情報を返します。 |