3日目 福岡の力士は赤くしよう【30日間1日1本マクロ生活】

福岡の力士

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

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

今日のネタは、フォントの装飾と条件分岐とループです。

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

番付 四股名 出身地 部屋
東横綱 白鵬 モンゴル 宮城野
西横綱 日馬富士 モンゴル 伊勢ヶ濱
東横綱 稀勢の里 茨城県 田子ノ浦
西横綱 鶴竜 モンゴル 井筒
東大関 高安 茨城県 田子ノ浦
西大関 豪栄道 大阪府 境川
東大関 照ノ富士 モンゴル 伊勢ヶ濱
東関脇 御嶽海 長野県 出羽海
西関脇 嘉風 大分県 尾車
東小結 玉鷲 モンゴル 片男波
西小結 栃煌山 高知県 春日野
東前頭筆頭 栃ノ心 ジョージア 春日野
西前頭筆頭 琴奨菊 福岡県 佐渡ヶ嶽
東前頭二枚目 北勝富士 埼玉県 八角
西前頭二枚目 碧山 ブルガリア 春日野
東前頭三枚目 阿武咲 青森県 阿武松
西前頭三枚目 千代大龍 東京都 九重
東前頭四枚目 松鳳山 福岡県 二所ノ関
西前頭四枚目 宇良 大阪府 木瀬
東前頭五枚目 正代 熊本県 時津風
西前頭五枚目 貴景勝 兵庫県 貴乃花
東前頭六枚目 逸ノ城 モンゴル 湊
西前頭六枚目 輝 石川県 高田川
東前頭七枚目 千代の国 三重県 九重
西前頭七枚目 勢 大阪府 伊勢ノ海
東前頭八枚目 千代翔馬 モンゴル 九重
西前頭八枚目 宝富士 青森県 伊勢ヶ濱
東前頭九枚目 貴ノ岩 モンゴル 貴乃花
西前頭九枚目 荒鷲 モンゴル 峰崎
東前頭十枚目 石浦 鳥取県 宮城野
西前頭十枚目 豪風 秋田県 尾車
東前頭十一枚目 大栄翔 埼玉県 追手風
西前頭十一枚目 千代丸 鹿児島県 九重
東前頭十二枚目 大翔丸 大阪府 追手風
西前頭十二枚目 佐田の海 熊本県 境川
東前頭十三枚目 錦木 岩手県 伊勢ノ海
西前頭十三枚目 魁聖 ブラジル 友綱
東前頭十四枚目 遠藤 石川県 追手風
西前頭十四枚目 隠岐の海 島根県 八角
東前頭十五枚目 徳勝龍 奈良県 木瀬
西前頭十五枚目 豊山 新潟県 時津風
東前頭十六枚目 朝乃山 富山県 高砂
東十両筆頭 蒼国来 中国 荒汐
西十両筆頭 妙義龍 兵庫県 境川
東十両二枚目 安美錦 青森県 伊勢ヶ濱
西十両二枚目 東龍 モンゴル 玉ノ井
東十両三枚目 大奄美 鹿児島県 追手風
西十両三枚目 琴勇輝 香川県 佐渡ヶ嶽
東十両四枚目 旭大星 北海道 友綱
西十両四枚目 豊響 山口県 境川

日本相撲協会

相撲の力士、関取の一覧です。外国人力士がたくさんいますね。

で、自分の出身の県の力士ってすごく気になるし、応援したくなるじゃないですか。

わたしは福岡出身で福岡在住です。福岡出身の力士の活躍はすごく気になりますし、誇りに思います。

そこで、福岡出身力士の名前を赤く装飾し、目立つようにするマクロです。

C列に入っている県名が「福岡県」であるとき、B列の名前を赤色に装飾します。

さっそくコードを


Sub 福岡力士は赤()
    y = 2
    Do While Cells(y, 1) <> ""
        If Cells(y, 3) = "福岡県" Then
            Cells(y, 2).Font.ColorIndex = 3
        End If
        y = y + 1
    Loop
    
End Sub

では、解説します。

3行目

2行目の「y=2」は後ほど説明します。

3行目の「Do While」です。

「Do」は1日目、2日目に出て来た「For」と同じで、ループの命令です。

「Do」で始まって8行目の「Loop」で終わります。

「While ~」は「~である間はずっと」という意味です。

「<>」は「異なる」という意味で、「””」は「何も無し」という意味です。

つまり、「Cells(y,1)に入っているデータが『何も無しではない』」のときは、Loopまでの間を繰り返しなさい、という命令です。

ここで「y」

ここで2行目の「y」の登場です。

2行目で「y」に2を入れました。だから、まずは「Cells(2,1)」を見ます。

「東横綱」と書いてありますから、「何も無し」ではありません。だから、ループの中に入ります。

4行目からの処理は後で説明します。

7行目に「y=y+1」とあります。

ここで、yに入っている値に1を足したものを、改めてyに入れなおします。

つまり、いま2が入っていたので、改めて2+1の3がyに入ったことになります。

8行目の「Loop」で3行目の「Do」に戻ります。

今度はy=3なので、「Cells(3,1)」を見ます。

この繰り返しです。

画像にはありませんが、データは51行目まで続きます。

yに52が入ったとき、「Cells(52,1)」が「何も無い」になります。

条件を満たさないので、ループから出て9行目に進むという仕組みです。

If ~ Then

「If ~ Then」は「条件分岐」と言われます。

「~」の部分が正しければ、「Then」以下「End If」までの部分を実行しなさいという命令です。

正しくなければ、End Ifの外に出ます。

ここでは「Cells(y,3)」つまり「出身地の入っているセルの内容が『福岡県』であるならば」と読みます。

Font.ColorIndex

5行目の「Cells(y, 2).Font.ColorIndex = 3」について。

「.」の意味は先日説明したとおり、日本語の「の」です。

つまり、Cells(y,3)「の」、Font「の」、ColorIndexと読みます。

「Font」は文字通りフォント。文字の装飾についてです。

ですから、文字の装飾「の」、です。

文字の装飾のひとつに「ColorIndex」があるんです。

ColorIndexとは、あらかじめ決められた色の番号です。

赤は3番とか、緑は4番とか、青は5番とか、あらかじめ決まっています。

ここでは赤にしたいので、ColorIndexを3にします。

実行結果

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

はい、このように福岡出身力士の名前が赤く装飾されました。

Excelは便利

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

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

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

30日間、頑張ります。