VBAで数値データを扱っていると、次のようなことはありませんか?
- 年齢を年代別に分類したい
- 点数を範囲ごとに集計したい
- 数値をグループ分けしたい
このような場合は、Partition関数を使うことで解決できます。
数値を指定した範囲ごとに分類できる、少しマイナーですが便利な関数です。
この記事では、Partition関数の基本から実務での活用方法まで分かりやすく解説します。
この記事でできること
- 数値を範囲ごとに分類できる
- 年代・点数帯の作成ができる
- 実務で使える活用例が分かる
Partition関数とは?
Partition関数は、数値を指定範囲ごとにグループ化して文字列で返す関数です。
例えば:
- 0〜9
- 10〜19
- 20〜29
のような分類が簡単にできます。
基本:Partition関数の使い方
基本構文はこちらです。
Partition(値, 開始値, 終了値, 区切り幅)
| 引数 | 内容 |
|---|---|
| 値 | 分類したい数値 |
| 開始値 | 最小値 |
| 終了値 | 最大値 |
| 区切り幅 | グループの幅 |
基本例
MsgBox Partition(25, 0, 100, 10)
→ 20:29
25 が「20〜29」の範囲に分類されます。
年代分類の例
年齢を10歳区切りに分類できます。
Dim age As Integer
age = 34
MsgBox Partition(age, 0, 100, 10)
→ 30:39
点数帯を作る
Dim score As Integer
score = 78
MsgBox Partition(score, 0, 100, 20)
→ 60:79
セルの値を分類する
Range("B1").Value = Partition(Range("A1").Value, 0, 100, 10)
A1の数値を範囲分類してB1へ表示します。
実務での活用例
- 年齢層分析
- 売上帯分析
- 点数帯分類
- データ集計
分析系の処理で役立ちます。
Partitionの戻り値
戻り値は文字列です。
Dim result As String
result = Partition(45, 0, 100, 10)
MsgBox result
→ 40:49
開始値より小さい場合
MsgBox Partition(-5, 0, 100, 10)
→ : -1
終了値より大きい場合
MsgBox Partition(150, 0, 100, 10)
→ 101:
注意点
① 戻り値は文字列
数値ではなく文字列で返されます。
② 区切り幅に注意
0以下はエラーになります。
③ VBAではややマイナー
知らない人も多い関数ですが便利です。
実務向けサンプル(年代別集計)
Option Explicit
Sub AgeGroup()
Dim age As Integer
age = Range("A1").Value
Range("B1").Value = Partition(age, 0, 100, 10)
End Sub
よくあるエラーと対処法
① 型が一致しません
数値以外を渡している可能性があります。
② 思った範囲にならない
区切り幅を確認してください。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- Partitionは数値を範囲分類する関数
- 年代・点数帯作成に便利
- 戻り値は文字列
- 分析系処理で活躍
Partition関数を使いこなせるようになると、データ分析系の処理が非常に楽になります。
少しマイナーですが、実務では便利なのでぜひ覚えておきましょう。

コメント