
エクセルゲームで〇×ゲームを作ったけど、勝ち負けの判定を自動でできないかな?
でも、プログラミングはわからない。



関数で勝ち負けの判定を作っちゃいましょう!
まるばつゲームの作り方と完成したゲームを1つファイルにまとめて330円(税込)販売しています。
「見本が欲しい」「すぐに遊びたい」という方は↓のボタンからファイルをゲットしてください。
前回の記事でまるばつゲームの作り方を紹介します。
とてもアナログで勝ち負けの判定を自分で行う必要がありました。
でも、せっかくパソコンでゲームを作るんだから、勝ち負けの判定くらい自動でやってほしいですよね。
実はプログラムを書かなくても、関数で勝ち負けの判定をすることができます。
前回のまるばつゲームを基に勝ち負け判定を追加する方法をご紹介します。
前回の「まるばつゲーム」の作り方が気になる方は↓の記事を見てみてください。


記事を読んでいただき、ありがとうございます。
しかし、こんなことを思っている方はいませんか?
「ゲームを作るVBAを知りたいんじゃない、仕事でつかえるVBAを知りたいんだ!」
「VBAを基礎から体系的に勉強したい」
「でも、勉強するまとまった時間はないし、お金もない!」
そんな方には、Youtuberとしても有名なUdemy講師のエクセル兄さんが教える
「Excel VBA エキスパート認定への道 ~マクロ初心者から資格試験レベルへ &7つの自動化 マクロ を作る15時間」の講座がおすすめです。
この講座の良いところは4つ。
- 仕事でつかえるVBAを学べる
- スクールに通うより圧倒的に安い
- 買い切り
- 隙間時間で勉強できる
- 一度買えば、何度でも見れる
VBAを仕事で活用できるレベルになりたいという方は↓のボタンから購入し、勉強しましょう。
関数を入力するためにボードを移動します


関数を入力しやすいようにボードの位置を少し調整します。
A列、B列を選んで、右クリック
「挿入」を左クリック




続いて、1行、2行を選んで、左クリック
同じく「挿入」を左クリック




これでボードの周りに関数を入力するためのセルができました。
準備ができたので関数を入力していきましょう!
COUNTIF関数で〇と×の数を数えよう


COUNTIFは「決まった値の入ったセルの数を数える」関数
COUNTIFは次のように書きます。
=COUNTIF(検索する範囲,検索条件)
COUNTIFは検索する範囲内のセルのうち、検索条件に当てはまる値が入っているセルの数を表示します。
例えば、A1のセルに「=COUNTIF(A2:A6,”〇”)」と入力します。


A2~A6に〇が入力されていないので、A1には「0」が表示されます。


続いて、A2に〇を入力すると、A1には「1」が表示されます。


こんな感じにCOUNTIFは検索する範囲に検索条件にあったセルの数を表示します。
記事を読んでいただき、ありがとうございます。
しかし、こんなことを思っている方はいませんか?
「ゲームを作るVBAを知りたいんじゃない、仕事でつかえるVBAを知りたいんだ!」
「VBAを基礎から体系的に勉強したい」
「でも、勉強するまとまった時間はないし、お金もない!」
そんな方には、Youtuberとしても有名なUdemy講師のエクセル兄さんが教える
「Excel VBA エキスパート認定への道 ~マクロ初心者から資格試験レベルへ &7つの自動化 マクロ を作る15時間」の講座がおすすめです。
この講座の良いところは4つ。
- 仕事でつかえるVBAを学べる
- スクールに通うより圧倒的に安い
- 買い切り
- 隙間時間で勉強できる
- 一度買えば、何度でも見れる
VBAを仕事で活用できるレベルになりたいという方は↓のボタンから購入し、勉強しましょう。
COUNTIFを書こう!3STEP
まるばつゲームに勝つためには「縦横斜めに3つ並んだほうが勝ち」
なので、まず縦横斜めに〇と×がそれぞれいくつあるかを数える。
C2のセルに「=COUNTIF(C$3:C$5,”〇”)」と入力します。



記事中の式をコピーして貼り付けると楽ですよ!


このC2の式をD2、E2にコピーしましょう。
これで縦の〇の数を数えられます。


次に×の数を数えるために、C6に「=COUNTIF(C$3:E$5,”×”)」を入力します。


そして、C6の式をD6、E6にコピーします。
これで縦の×の数も数えられます。


B3のセルに「=COUNTIF($C1:$E3,”〇”)」と入力します。


B3の式をB4、B5にコピーしましょう。
これで横の〇の数を数えられます。


続いて、F3のセルに「=COUNTIF($C1:$E3,”×”)」と入力します。


その後、F3セルをF4、F5にコピー。


これで横の×の数も数えられます。
縦横に数えられたので、次は斜めに数えます。
まずは↓の矢印の向きに〇と×を数えます。


B2のセルに「=COUNTIF($C$3,”〇”)+COUNTIF($D$4,”〇”)+COUNTIF($E$5,”〇”)」を入力しましょう。



斜めに数えるには縦横のときとは違い、COUNTIFの結果を3つ合計する必要があります。
縦横のときと同じように記事中の式をコピーしてください。


続いて、F6に「=COUNTIF($C$3,“×”)+COUNTIF($D$4,“×”) +COUNTIF($E$5,“×”)」を入力。


続いて↓の矢印の向きに〇と×を数えます。


A5に「=COUNTIF($C$5,”〇”)+COUNTIF($D$4,”〇”)+COUNTIF($E$3,”〇”)」を入力しましょう。



ほんとはB6に入力したいところですが、のちの工程でちょっと不都合があるのでA5に入力します。


次は、×を数えます。
G3に「=COUNTIF($C$5,”×”)+COUNTIF($D$4,”×”)+COUNTIF($E$3,”×”)」を入力します。


これでボード上のまるばつを数える作業は完了です!
IF関数で勝ち負け引き分けの判定をしよう


IF関数は「もし〇〇だったら、××する」関数
IF関数は次のように書きます。
=IF(論理式,論理式に当てはまるの場合の処理, 論理式に当てはまらない場合の処理)
例えば、B1に「=IF(A1=1,”〇”,”×”)」を入力します。


これは「もしA1に1が入力されていたら、B1に〇表示する。そうでなければ×を表示する」という意味です。
A1に「1」が入力されていない場合、「×」が表示されます。


もしA1に「1」が入力されていた場合、「〇」が表示されます。


このIF関数を使って勝ち負けの判断を設定していきましょう。
IF関数を書こう!3STEP
まず〇と×の勝利条件を確認します。
下図の赤枠のセルの中に「3」があれば、「〇の勝ち」、
青枠のセルの中に「3」があれば、「×の勝ち」、
どちらも当てはまらなければ「引き分け」
です。


まずは、〇について関数を作ります。
H2に「=IF(COUNTIF(A2:E5,3),”〇の勝ち”,””)」と記載します。


これで赤枠の中のセルに「3」があったら、H2に「〇の勝ち」、そうでなければ「””(空白)」が表示されるようになりました。
続いて、「””(空白)」の部分に「×の勝ち」と表示するようなIF文を加えます。
できたIF文は「=IF(COUNTIF(A2:E5,3),”〇の勝ち”,IF(COUNTIF(C3:G6,3),”×の勝ち”,””))」。


赤枠の中に「3」があれば「〇の勝ち」、青枠の中に「3」があれば「×の勝ち」、両方でなければ「””(空白)」が表示されます。
最後に引き分けも表示したいので、「””(空白)」を「”引き分け”」に変更します。


これで、勝ち負け判定の関数ができました!
COUNTA関数で試合終了の判定をしよう


COUNTA関数は「範囲内の値の数を数える」関数
COUNTAは次のように書きます。
=COUNTA(指定した範囲)
例えば、A1に「=COUNTA(A2:A6)」と入力します。


これは、「A2~A6の中の値が入力されているセルの数を表示する」を意味します。
A2~A6に何も入力されていないので、A1に「0」が表示されます。


つづいて、A2に値を入力すると、A1には「1」が表示されます。


このCOUNTA関数を勝ち負け判定の式に加えていきます。
まるばつゲームは全部のマスに入力したらゲーム終了
今のままだとゲーム中にずっと「引き分け」が表示されます。
勝負が決まっていないのに、「引き分け」はおかしいですよね。
そのため、勝負が決まったときに表示されるようにしたいです。
今回は、「9個のすべてのマスに〇か×を入力された時点をゲーム終了」となるように関数を修正していきます。
H2セルの勝ち負け判定の式に条件を加えていきます。
「=IF(COUNTA(C3:E5)<9,””,IF(COUNTIF(A2:E5,3),”〇の勝ち”,IF(COUNTIF(C3:G6,3),”×の勝ち”,”引き分け”)))」と入力します。


これで、ボード上のセルに値が9個未満だったらH2には「””(空白)」、
そうでなければ「IF(COUNTIF(A2:E5,3),”〇の勝ち”,IF(COUNTIF(C3:G6,3),”×の勝ち”,”引き分け”))の判定結果」を表示します。
見やすくなるように仕上げをしましょう!





このままだとボードの周りの数字があってボードが見づらいです。数字の文字色を白色に設定するとボードが見やすくなります。
最後に見やすくするために、少し装飾をします。
まずはA1にゲーム名「まるばつゲーム改」と書きます。
続いて、ボードの周りに「0」があると見づらいので、文字の色を白にしましょう。
最後に勝敗が表示されるH2セルに色を付けます。


これで勝ち負け判定を自動でやってくれるまるばつゲームは完成です。


VBAなしでも自動で勝ち負け判定はできる!


この記事では、COUNTIF関数、IF関数、COUNTA関数を使ってまるばつゲームの勝ち負け判定をする方法を紹介しました。
「自動で」なんて言うと難しそうですが、関数を使うことで実現できます。
本文をコピーしてもできますので、ぜひ挑戦してみてください。
今回はここまでです!
記事を読んでいただき、ありがとうございます。
しかし、こんなことを思っている方はいませんか?
「ゲームを作るVBAを知りたいんじゃない、仕事でつかえるVBAを知りたいんだ!」
「VBAを基礎から体系的に勉強したい」
「でも、勉強するまとまった時間はないし、お金もない!」
そんな方には、Youtuberとしても有名なUdemy講師のエクセル兄さんが教える
「Excel VBA エキスパート認定への道 ~マクロ初心者から資格試験レベルへ &7つの自動化 マクロ を作る15時間」の講座がおすすめです。
この講座の良いところは4つ。
- 仕事でつかえるVBAを学べる
- スクールに通うより圧倒的に安い
- 買い切り
- 隙間時間で勉強できる
- 一度買えば、何度でも見れる
VBAを仕事で活用できるレベルになりたいという方は↓のボタンから購入し、勉強しましょう。
コメント