今回は別のワークシートに情報をコピーするテクニックを考えていきます。
以下のように、各個人のシートが作成されており、国語、数学、英語の点数が記載されています。
これを1つのシートに集約していくというマクロです。
最終的に集約させるシートはこちらです。
■ポイント
今回の作成のポイントは、他のシートの情報をどのように参照するかとなります。
例えば、Range("C3").valueという記述では、アクティブなワークシートの情報を取得することになります。
Worksheets("田中").Range("C3").valueとすると、田中シートにあるC3セルの値を、
取得することができます。
ワークシートはこのまま直接名前を指定することもできますし、
Worksheets(1)といったインデックス番号で指定することもできます。
インデックスは左から1から順番に割り振られています。
田中シートは左から3番目にあるので、
Worksheets(3).Range("C3").valueと記述しても同じことになります。
ただし、インデックス番号で指定する場合は、シートの順番が変われば
番号も変わりますので、その点はご注意を。
■回答
Sub Q7_Answer()
Worksheets("全体").Range("B3").Value = Worksheets("田中").Range("B3").Value
Worksheets("全体").Range("B4").Value = Worksheets("高橋").Range("B3").Value
Worksheets("全体").Range("B5").Value = Worksheets("山田").Range("B3").Value
Worksheets("全体").Range("C3").Value = Worksheets("田中").Range("C3").Value
Worksheets("全体").Range("C4").Value = Worksheets("高橋").Range("C3").Value
Worksheets("全体").Range("C5").Value = Worksheets("山田").Range("C3").Value
Worksheets("全体").Range("D3").Value = Worksheets("田中").Range("D3").Value
Worksheets("全体").Range("D4").Value = Worksheets("高橋").Range("D3").Value
Worksheets("全体").Range("D5").Value = Worksheets("山田").Range("D3").Value
Worksheets("全体").Range("E3").Value = Worksheets("田中").Range("E3").Value
Worksheets("全体").Range("E4").Value = Worksheets("高橋").Range("E3").Value
Worksheets("全体").Range("E5").Value = Worksheets("山田").Range("E3").Value
End Sub
■解説
解説もクソもありません。たた、単純にコピーしただけのマクロです。
もちろん、これはいい例ではありません。
ただ、これでも今回の目的は達成されているわけなんですね。
そこで、次に考えるべきは、拡張性です。
同じように100人分のデータがあったとき、効率の違いが如実に現れます。
ただし、このように少ないデータの場合は、行数としてはそこまで変わらないんですね。
ループ処理を取り入れることによって、もっと効率的に記述することができるようになります。
効率的に記述できれば、3人だろうと、100人だろうと行数はそこまで変わりません。
次回それらへんを取り扱っていこうと思います。
それでは、最後の今回の結果を載せておきます。