【ExcelVBA・マクロ】Partition関数の使い方|数値を範囲ごとに分類する方法【コピペOK】

Partition関数の使い方 ExcelVBA

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関数を使いこなせるようになると、データ分析系の処理が非常に楽になります。
少しマイナーですが、実務では便利なのでぜひ覚えておきましょう。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました