Help us understand the problem. What is going on with this article?

Q7.別のワークシートにセルの値をコピーするには?①

今回は別のワークシートに情報をコピーするテクニックを考えていきます。

以下のように、各個人のシートが作成されており、国語、数学、英語の点数が記載されています。
これを1つのシートに集約していくというマクロです。

Q7.png

7-3.png

7-4.png

最終的に集約させるシートはこちらです。

Q7-2.png

■ポイント

今回の作成のポイントは、他のシートの情報をどのように参照するかとなります。
例えば、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人だろうと行数はそこまで変わりません。

次回それらへんを取り扱っていこうと思います。

それでは、最後の今回の結果を載せておきます。

7-5.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away