6日目 相関表を作ろう【30日間1日1本マクロ生活】

相関表

30日間1日1本マクロ生活、6日目です。

マクロを書く準備は、0日目に記事を書きました。

今日のネタは、相関表。

こんなデータを準備してみました。

氏名数学英語
堀田由美41
滝口省三22
中島当麻41
永島華絵22
小坂新一郎34
五十嵐治郎12
武内美千代24
佐竹絢子54
川本祐子43
酒井麗華52
片桐由紀子24
池谷沙菜12
尾上龍五13
本山辰二22
野島健之43
赤塚公男41
片山愛菜51
森岡竹雄22
松田峻輝23
坂田孝太郎22

氏名、数学の成績、英語の成績のデータ20人分です。

ちなみに、氏名はダミーの名前です。4日目にも紹介した「疑似個人情報データ生成サービス」を利用しました。

この情報から、縦に数学の成績、横に英語の成績を並べ、相関表を作ります。

さっそくコードを


Sub 相関表()
    y = 2
    Do While Cells(y, 1) <> ""
        sx = 12 - Cells(y, 3)
        sy = 7 - Cells(y, 2)
        sn = Cells(y, 1)
        
        If Cells(sy, sx) = "" Then
            Cells(sy, sx) = sn
        Else
            txt = Cells(sy, sx) & vbCrLf & sn
            Cells(sy, sx) = txt
        End If
        y = y + 1
    Loop        
End Sub

では、解説します。

If 条件 Then 真 Else 偽

If文は今までにも出てきました。

If の後に条件を書き、その条件が正しいときには Then 以下を実行するというものです。

「Else」は「そうでなければ」と読みます。

つまり、条件を満たすのならばThen以下を、そうでなければElse以下を実行します。

相関表の座標

数学の成績と相関表のy座標の関係です。

数学y座標
16
25
34
43
52

つまり、「数学」+「y座標」=7なので、「y座標」=7-「数学」です。

同様に、「x座標」=12-「英語」です。

vbCrLf

11行目の「vbCrLf」ですが、これは「改行」です。

セルの内容が「何も無し」ならば、そこに名前を入れます。

そうでなければ、「txt」という変数にセルの内容に加えて「vbCrLf」と名前をつけ足したものを代入し、それをセルの中に入れます。

こうすると、セルに名前が入っていれば、その名前の後ろに改行を入れ、次の名前が下に付け加えられます。

実行結果

マクロを記述するウィンドウの「Sub」と「End Sub」の間にカーソルを置いて、画面上方の再生ボタン的なアイコン(右向きの三角形)をクリックするか、[F5]キーを押します。

このように、相関表ができあがりました。

Excelは便利

悔しいですが、Excelは便利です。

Microsoftにお金を払うのは癪でしょうがないんですが、Excelばかりは仕方がない。

マクロを書くようになると、Excelからは離れられないですね。

30日間、頑張ります。

雑感

Posted by Hirota