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でプログラム文をつくってみてもいいかもしれませんね。