スプレッドシートでボウリングのスコアシートを作ろう

スコアシートの例

ボウリングでは次のようなスコアシートが付けられます。

例1

1 2 3 4 5 6 7 8 9 10
6 8   27 5 34   9 12 71 
18 26 45 54 67 74 94 105 108 116

例2

1 2 3 4 5 6 7 8 9 10
18 9 72   9 36 8 54 81
9 26 35 45 45 58 67 75 84 103

スコアシートの意味

1行目はフレーム番号

2行目は各フレームの1投目と2投目(10フレームはさらに3投目)、数字は倒した本数、「X」は「ストライク」、「/」は「スペア」、「G」は「ガター」、「-」は「ミス(ピンに当たらなかった)」

3行目はそのフレームまでのスコア

スコアの計算方法

ストライクの場合、次の2投分の点数を、スペアの場合は次の1投分の点数を加算。 また、ガター、ミスは0点です。

なお、10フレーム目はストライクやスペアがあれば3回投げられますが、それ以外は2回だけ投げられます。 10フレーム目では倒れたピンの数だけカウントされるため、ストライクが3つの場合は30点です。

最高点

つまり、すべてストライクの場合は次のようになり、最高点は300点です。

例3

1 2 3 4 5 6 7 8 9 10
                 
30 60 90 120 150 180 210 240 270 300

入力データ

上記の例の場合、次のような入力形式で各フレームでの点数が与えられるものとします

  1 2 3 4 5 6 7 8 9 10
例1 64 80 10  27 55 34 10  91 12 71 
例2 18 91 72 10  00 91 36 80 54 1081
例3 10  10  10  10  10  10  10  10  10  101010

問題

スプレッドシートの5行目に下記の入力データを入力し、1行目から3行目までに入力データから自動的にスコアシートが表示されるようにしてください。

1 2 3 4 5 6 7 8 9 10
91 82 10  50 36 42 73 63 10  919

フレーム番号の作成

1行目にフレーム番号を入力します。 A列からR列まで2列単位で結合し1~9までフレーム番号を入力します。 10フレームはS列からU列まで3列を結合し、フレーム番号10を入力します。

各フレームで倒したピン表示の作成

2行目に各フレームで倒したピンの情報を表示します。 各セルに対し、フレームごとに1投目、2投目(10フレーム目はさらに3投目)を以下のように表示します。

1フレームから9フレームまで

1投目は、以下のように表示します。

  • 0(ガター)の場合

    数字の代わりに全角の"G"を表示します

  • 10(ストライク)の場合

    数字の代わりに全角の"X"を表示します

  • それ以外の場合

    入力データの数字をそのまま表示します

2投目は、以下のように表示します。

  • 1投目がストライクの場合

    入力データが空欄になっているので、空欄をそのまま表示します

  • 1投目と2投目の合計が10の場合

    スペアなので、数字の代わりに全角の"/“を表示します

  • 2投目は0(ミス)の場合

    数字の代わりに全角の”-“を表示します

  • それ以外の場合

    入力データの数字をそのまま表示します

10フレーム

1投目については1~9フレームの1投目と同じ表示を行います。

2投目は、以下のように表示します。

  • 1投目がストライクの場合

    1~9フレームの1投目と同じ表示を行います

  • それ以外の場合

    1~9フレームの2投目のストライク以外の場合と同じ表示を行います

3投目は、以下のように表示します。

  • 2投目がストライクかスペアの場合

    1~9フレームの1投目と同じ表示を行います。

  • 1投目がストライクで、2投目がストライク以外の場合

    1~9フレームの2投目のストライク以外の場合の1投目と2投目を2投目と3投目に置き換えて、同様の処理を行います

  • それ以外の場合(1投目がストライクでなく、2投目がスペアでもない場合)

    空欄を表示します

スコアの表示

3行目をフレーム番号と同じように結合し、フレームごとに以下のようにスコアを表示します。

1~8フレーム

1投目と2投目の値によって前のフレームのスコア(ただし、1フレーム目は前のフレームの値は加算されません)に対し、以下のようにスコアが加算されます。

  • 1投目が10(ストライク)の場合

    • 次のフレームの1投目が10(ストライク)の場合

      1投目の値(10)+ 次のフレームの1投目の値(10)+次の次のフレームの1投目の値

    • 次のフレームの1投目が10(ストライク)以外の場合

      1投目の値(10)+ 次のフレームの1投目の値+次のフレームの2投目の値

  • 1投目と2投目の値の合計が10(スペア)の場合

    1投目の値+2投目の値(合わせて10)+次のフレームの1投目の値

  • それ以外の場合

    1投目の値+2投目の値

9フレーム

1投目と2投目の値によって前のフレームのスコア(8フレームのスコア)に対し、以下のようにスコアが加算されます。

  • 1投目が10(ストライク)の場合

    1投目の値(10)+10フレームの1投目の値+10フレームの2投目の値

  • 1投目と2投目の値の合計が10(スペア)の場合

    1投目の値+2投目の値(合わせて10)+10フレームの1投目の値

  • それ以外の場合

    1投目の値+2投目の値

10フレーム

前のフレームのスコア(9フレームのスコア)に対し、全ての投げた値(2投または3投)の合計値を加算します。

罫線の作成

1行目から3行目まで、1フレームから10フレームまで全てに罫線を設定します。

結果の確認

1行目から3行目までが以下のように表示されていれば正解です。

1 2 3 4 5 6 7 8 9 10
9 8   5 36 42 7 63   99
18 38 53 58 67 73 89 98 118 137

ヒント

計算式は以下のように使用します。

IF式

IF(条件, YESの時, NOの時) YESの時、NOの時の部分にもIF式を設定することができます。

AND式

AND(条件1, 条件2) IFの条件が複数条件で「かつ」の場合、ANDで結合できます。また、条件1や条件2の部分にもAND式やOR式を設定することができます。

OR式

OR(条件1, 条件2) IFの条件が複数条件で「または」の場合、ORで結合できます。また、条件1や条件2の部分にもAND式やOR式を設定することができます。

等しい・等しくない

条件では、=で等しい、<>で等しくないを表します。

解答

解答

1フレームから10フレームまでの1投目

IF(A5=0, "G", IF(A5=10, "X", A5))

Aの部分はフレームによって、C, E, G … Sまで変更される(コピペ)

1フレームから9フレームまでの2投目

IF(A5=10, "", IF(A5+B5=10, "/", IF(B5=0, "-", B5)))

(A,B)の部分はフレームによって、(C,D), (E,F), (G,H)… (Q,R)まで変更される(コピペ)

10フレームの2投目

IF(S5=10, IF(T5=0, "G", IF(T5=10, "X", T5)), IF(S5+T5=10, "/", IF(S5=0, "-", S5)))

10フレームの3投目

IF(OR(T5=10, AND(S5<>10, S5+T5=10)), IF(U5=0, "G", IF(U5=10, "X", U5)), IF(AND(S5=10, T5<>10), IF(T5+U5=10, "/", IF(U5=0, "-", U5)), ""))

1フレームのスコア

IF(A5=10, IF(C5=10, 20+E5, 10+C5+D5), IF(A5+B5=10, 10+C5, A5+B5))

2フレームから8フレームのスコア

A3+IF(C5=10, IF(E5=10, 20+G5, 10+E5+F5), IF(C5+D5=10, 10+E5, C5+D5))

(A,C,D,E,F,G)の部分はフレームによって(C,E,F,G,H,I)…(M,O,P,Q,R,S)まで変更される(コピペ)

9フレームのスコア

O3+IF(Q5=10, 10+S5+T5, IF(Q5+R5=10, 10+S5, Q5+R5))

10フレームのスコア

Q3+IF(U5="", S5+T5, S5+T5+U5)