勝敗表
30日間1日1本マクロ生活、5日目です。
マクロを書く準備は、0日目に記事を書きました。
マクロを書く準備早速マクロを書こうと思ったんですが、マクロって何?食えんの?って人もいると思うんで、丁寧に行こうかな、と。マクロってのは、通常は人間の手でやるような作業を、プログラムを書くことで機械に自動的にやらせるってことです。Excelの場合はVBA(Visual Basic for Application)という言語を使ってマクロを書きます。まずはその準備を。Excelを起動すると、ワークシートが現れます。ここでキーボードの「ALT+」を押してください。はキーボードの上方にあるファンクションキーの11番です。すると、このウィンドウが開... 0日目 マクロを書く準備をしよう【30日間1日1本マクロ生活】 - わたしの日常に価値はありますか? |
今日のネタは、データの整理です。
こんなデータを準備してみました。
東 勝敗 勝敗 西
隠岐の海 ○ ● 佐田の海
魁聖 ○ ● 荒鷲
千代翔馬 ○ ● 豊山
千代丸 ○ ● 勢
徳勝龍 ○ ● 輝
逸ノ城 ○ ● 大栄翔
正代 ● ○ 遠藤
松鳳山 ● ○ 大翔丸
朝乃山 ○ ● 千代大龍
阿武咲 ○ ● 貴ノ岩
石浦 ● ○ 碧山
北勝富士 ○ ● 豪風
宝富士 ● ○ 琴奨菊
栃ノ心 ● ○ 錦木
千代の国 ○ ● 栃煌山
玉鷲 ● ○ 貴景勝
御嶽海 ○ ● 嘉風
豪栄道 ● ○ 日馬富士
相撲の勝敗表です。
この表では勝敗に関係なく左に東、右に西の力士が書いてあって、勝った方に○、負けた方に●が記されています。
でも、状況によっては勝者をすべて左側に配置したい場面もあります。
今日はこれをやります。
B列に入っている勝敗の結果が「●」の場合は左側が敗者ですので、右側の勝者と入れ替えます。
さっそくコードを
Sub 勝ちは左に()
y = 2
Do While Cells(y, 1) <> ""
If Cells(y, 2) = "●" Then
w = Cells(y, 4)
l = Cells(y, 1)
Cells(y, 1) = w
Cells(y, 2) = "○"
Cells(y, 3) = "●"
Cells(y, 4) = l
End If
y = y + 1
Loop
End Sub
では、解説します。
「Do While」~「Loop」や「If ~ Then」などは今日までに何度も出てますね。
今日のポイントはセルの内容の入れ替えです。
スワップ
入れ替えのことを「スワップ」と言います。
4行目のIfの中身について説明します。
勝敗が「●」のとき、
- 変数「w」に4列目の名前を入れます。
- 変数「l」に1列目の名前を入れます。
- 1列目の名前に変数「w」の中身を入れます。
- 2列目を「○」に書き換えます。
- 3列目を「●」に書き換えます。
- 4列目の名前に変数「l」の中身を入れます。
この手続きで1列目と4列目の名前が入れ替わり、勝敗の○●が書き換わるのが分かるでしょうか。
実行結果
マクロを記述するウィンドウの「Sub」と「End Sub」の間にカーソルを置いて、画面上方の再生ボタン的なアイコン(右向きの三角形)をクリックするか、[F5]キーを押します。
はい、このように勝者がすべて左側になるように入れ替わりました。
と言っても、これじゃ本当に入れ替わってるか分かりにくいですよね。
隣に元のデータを貼り付けてみました。
Excelは便利
悔しいですが、Excelは便利です。
Microsoftにお金を払うのは癪でしょうがないんですが、Excelばかりは仕方がない。
マクロを書くようになると、Excelからは離れられないですね。
30日間、頑張ります。