5日目 勝った方を左に【30日間1日1本マクロ生活】

勝敗表

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

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

今日のネタは、データの整理です。

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

東 勝敗 勝敗 西
隠岐の海  ○ ● 佐田の海
魁聖  ○ ● 荒鷲
千代翔馬  ○ ● 豊山
千代丸  ○ ● 勢
徳勝龍  ○ ● 輝
逸ノ城  ○ ● 大栄翔
正代  ● ○ 遠藤
松鳳山  ● ○ 大翔丸
朝乃山  ○ ● 千代大龍
阿武咲  ○ ● 貴ノ岩
石浦  ● ○ 碧山
北勝富士  ○ ● 豪風
宝富士  ● ○ 琴奨菊
栃ノ心  ● ○ 錦木
千代の国  ○ ● 栃煌山
玉鷲  ● ○ 貴景勝
御嶽海  ○ ● 嘉風
豪栄道  ● ○ 日馬富士

相撲の勝敗表です。

この表では勝敗に関係なく左に東、右に西の力士が書いてあって、勝った方に○、負けた方に●が記されています。

でも、状況によっては勝者をすべて左側に配置したい場面もあります。

今日はこれをやります。

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