わたしの日常に価値はありますか?

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

相関表

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

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

マクロを書く準備早速マクロを書こうと思ったんですが、マクロって何?食えんの?って人もいると思うんで、丁寧に行こうかな、と。マクロってのは、通常は人間の手でやるような作業を、プログラムを書くことで機械に自動的にやらせるってことです。Excelの場合はVBA(Visual Basic for Application)という言語を使ってマクロを書きます。まずはその準備を。Excelを起動すると、ワークシートが現れます。ここでキーボードの「ALT+」を押してください。はキーボードの上方にあるファンクションキーの11番です。すると、このウィンドウが開...
0日目 マクロを書く準備をしよう【30日間1日1本マクロ生活】 - わたしの日常に価値はありますか?

今日のネタは、相関表。

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

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

氏名、数学の成績、英語の成績のデータ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座標
1 6
2 5
3 4
4 3
5 2

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

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

vbCrLf

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

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

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

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

実行結果

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

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

Excelは便利

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

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

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

30日間、頑張ります。

モバイルバージョンを終了