9/29/2022

Excel。年齢を年代分けするなら、Excel VBAのPartition関数をつかうのもあり。【AGE】

Excel。年齢を年代分けするなら、Excel VBAのPartition関数をつかうのもあり。

<Excel VBA:Partition関数>

データの年齢を10代ごとの年代別がわかるようにしたい場合、どのようにしたら、手早く・楽に算出することができるのか、考えると、なかなか、大変です。


10で除算して、一の位の値が「1」だったらとか考えますが、普通、「11-20」で一塊ですから、「20」のような場合、10で除算しても、一の位が「2」になってしまうので、どうしたものかと考えてしまいます。


そこで、Excel VBAでプログラムをつくってみるというのは、どうでしょうか。


このような年代をわかるようにしたい場合は、とても簡単なプログラム文で、設定・算出することができます。


次の表をつかってみます。


C列に年代を算出するプログラムをつくってみました。

Sub 年代()

    Dim i As Long

    Dim lastrow As Long

    lastrow = Cells(Rows.Count, "b").End(xlUp).Row

    

    For i = 2 To lastrow

        Cells(i, "c") = Partition(Cells(i, "b"), 1, 100, 10)

    Next

End Sub


処理を実行しているプログラム文は、1行だけなのですが、まずは実行してみましょう。


このように、64は60歳代なので、「61:70」と算出されています。


このあと、年代別に集計する場合には、算出した値を使うことで、簡単に集計することができます。


プログラム文も確認しておきましょう。


最初は、変数宣言です。

Dim i As Long

Dim lastrow As Long


変数のlastrowには、データの最終行数を設定します。


lastrow = Cells(Rows.Count, "b").End(xlUp).Row


このlastrowまで繰り返せばいいわけです。


そして、プログラム文本体は、For To Next文をつかって、繰り返し処理をしています。


For i = 2 To lastrow

    Cells(i, "c") = Partition(Cells(i, "b"), 1, 100, 10)

Next

今回の年代を算出するのにつかったのは、「Partition関数」です。


このPartition関数は、通常のExcel関数にはありません。

あれば、わざわざ、VBAでプログラブ文を作らなくてもいいわけですね。


Partition関数は関数ということもあって、引数をもっています。

この引数を設定したことで、10代ごとに算出することができたというわけです。


Partition(Cells(i, "b"), 1, 100, 10)


最初の引数には、「Cells(i, "b")」と設定しています。この値を判定するわけですね。


2つ目の引数には「1」と設定しています。


3つ目の引数には「100」と設定しています。


2つ目と3つ目の引数は、1~100までと対象の範囲を指定します。


最後の引数には、「10」と設定することで、10個ずつという範囲の長さで等分することができます。


年代別を算出するならば、Excel VBAでプログラム文をつくってみてもいいかもしれませんね。