相関表
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日間、頑張ります。