誤答数を数値ではなく「×」の個数で表現する

これまで、誤答数表示は、「(誤答数)×」という形式で表現しておりました。
ですが、たとえば2×なら「××」、4×なら「××××」と、×数を並べる表示法も考えられます。
いわば一進法による表現方法です。

表示スペースに余裕がある場合、こちらのほうが見ている人にとっては直感的に分かることがあります。
正解数や誤答数といった複数のパラメータを、どちらも数値で表現するのではなく、片方(できればあまり大きい値にならない方)を一進法によって表示すると、見やすくなるはずです。

Excel関数には、これを簡単に表現出来る関数が存在します。

今回は、【基本⑤】を改造して作ってみたいと思います。
完成品はこちらです。

【新しく登場するExcelの機能】

関数「REPT」
関数「MAX」
関数「CHAR」
関数「LEFT」
関数「RIGHT」

【作り方】

①後で非表示にする、誤答数カウントセルを作る


現状、誤答数は5行目のセルに直接COUNTIF関数と"×"を連結させて表示しています。
ここでは、COUNTIF関数を使って誤答数だけ表示する(="×"の字が付かない)セルを新たに作り(6行目)、誤答数を表示する5行目では6行目の数値をもとに表示します。

6行目の見出しをクリックし、6行目全体を選択してから、「挿入」を押します。
1行増設されました。
そこに、数式を入力します。
D6セルに以下の数式を入力し、K6セルまでオートフィルします。

=COUNTIF(D$8:D$57,"x")


②誤答数表示セルを改造する

続いて、その上の5行目を書き換えます。
D5セルに以下の数式を入力し、までオートフィルします。

=REPT("×",D$6)



さて、新しい関数が登場しました。
これが、冒頭で述べた関数、REPT関数です。
第1引数に「何回も表示させたい文字列」、第2引数に「文字列の個数」を指定するだけです。
これで、誤答した数の分だけ「×」が表示されるようになりました。
×の字は、見やすくなるように文字の大きさを大きくしたり、ボールド体にしたりするとよいでしょう。
ボールド体は、上のメニューからボタンをクリックしてもいいですが、Ctrl+Bで簡単に切り替えることが出来ることを覚えておいてもいいでしょう。

③誤答数カウントセルを非表示にする

6行目の見出しを右クリックし、「非表示」を選択すれば終了です。


<応用>まだ誤答していない分の領域を「・」で表現する

「abc」の得点表示では、以下のように、「誤答猶予を・(点)で表現する」という方法がとられることがあります。



そのような場合は、このようにしてみましょう。
さきほどの②の数式を以下のように書き換えます。

=REPT("×",D$6)&REPT("・",MAX($O$4-D$6,0))

まず「×」を誤答回数分並べ、次に「・」を誤答猶予(=失格条件となる誤答数-実際の誤答数)分並べるのです。

ここで、「・」を並べる個数について、MAX(誤答猶予,0)という数式を用いました。
これは、「もし誤答猶予が0未満になったら、0として扱う」というものです。
ルールに厳密に則れば、失格条件以上の誤答をすることはありませんが、もしゆるい感じでクイズをやっている場合、それ以上の誤答をしてもいいことになったりする場合も考えられます。可能な限り、そういうことには柔軟に対応しておきたいものです。
話を戻すと、REPT関数の第2引数に0未満の数値が入ると、エラーとなってしまいます。そこで、このようにしておくことで、エラーを回避するのです。


<応用>改行する

※完成品はこちら

例えば、10×で失格となる形式の場合、5個ごとに2段に分けて表示しないと表示しきれないと思われます。

セル内に文字列を入力し、それを改行したい場合、「Alt+Enter」を使えば改行することができます。
しかし、例えば「=A1&"○"&B1&"×"」のように、数式を使って複数の文字列を連結した場合、たとえ「=A1&"○"」と「B1&"×"」の間で「Alt+Enter」による改行を施しても、表示上は改行されておりません。
このように、数式で連結した文字列を改行したい場合は、CHAR関数を利用しましょう。
CHAR関数は、内部コードに対応する文字に変換する関数で、カッコの中に数値を入力することで、ありとあらゆる数字を表現することができます。
そして、改行したい場合は「CHAR(10)」を挿入しましょう。

=A1&"○"&CHAR(10)&B1&"×"

そして、セルを選択し「折り返して全体を表示」をONにしましょう。このボタンは、「ホーム」タブの「配置」グループの中にあります。



この通り、数式で連結した文字列でも改行することができました。

さて、これを誤答数表示に応用してみましょう。ここでは、10×失格の場合を考えます。
D5セルの数式はこのようになります。

=LEFT(REPT("×",D$6)&REPT("・",MAX($O$4-D$6,0)),5)&CHAR(10)&RIGHT(REPT("×",D$6)&REPT("・",MAX($O$4-D$6,0)),5)


LEFT関数・RIGHT関数は、ある文字列を左から(右から)何文字までを取り出すかを指定することで、文字列の一部のみを表示させることが出来る関数です。
これを使えば、簡単に2行に分割することができます。

「折り返して全体を表示」をONを忘れずに!

<応用>Swedishの×数・誤答時の加算×数表示

※完成品はこちら

Swedish形式では、「正解数」「×数」に加え、「この状態で誤答するといくつの×が表示されるか」という情報が表示されます。

abcの場合、誤答すると×が増えてしまう領域は「―」(横のバー)で表現されます。

例えば、現状で6○2×のとき、次に誤答すると×が4つ増えます。このような場合は、

××―――
―・・・・
と表示されます。

それでは、Swedishの得点表示を開きましょう。

5行目に今の×数、6行目に誤答すると増加する×数を表示しています。
まず、空白の7行目を追加し、6行目を消去します。

続いて、6・7行目に以下の数式を入力します。

(D6セルの場合)
=SUM(N9:N58)

(D7セルの場合)
=ROUNDDOWN((1+SQRT(SUM(D$8:D$57)*8+1))/2,0)




そして、誤答表示の5行目には以下の数式を入力します。

(D5セルの場合)
=LEFT(REPT("×",MIN($O$4,D$6))&REPT("―",MAX(MIN(D$7,$O$4-D$6),0))&REPT("・",MAX($O$4-D$7-D$6,0)),5)&CHAR(10)&RIGHT(REPT("×",MIN($O$4,D$6))&REPT("―",MAX(MIN(D$7,$O$4-D$6),0))&REPT("・",MAX($O$4-D$7-D$6,0)),5)

LEFT関数・RIGHT関数の第1引数のみを取り出すとこうです。

REPT("×",MIN($O$4,D$6))&
REPT("―",MAX(MIN(D$7,$O$4-D$6),0))&
REPT("・",MAX($O$4-D$7-D$6,0))



以下は、MAX関数とMIN関数の使い方のまとめです。


<下限を設定したい場合>

MAX(下限,数値)

<上限を設定したい場合>

MIN(上限,数値)

<上限と下限を設定したい場合>

MAX(下限,MIN(上限,数値))

もしくは

MIN(上限,MAX(下限,数値))

<フォントの選び方>

以上の2つの「応用編」では、複数種類の文字を使用しました。
この際、注意すべき点があります。
それは、「×」と「・」で横幅が一致しているフォントを使用しないと、下の画像のように、×の個数によって左右の位置がズレてしまうという問題が発生します。
これは「プロポーショナルフォント」と言って、文字によって横幅が異なるフォントです。最近はこのフォントがかなり多くなってきています。
それに対し、すべての文字が同じ幅の「等幅フォント」を使ってあげれば、あたかも「・があった場所に×が生じる」ように見せることが出来ます。

以下に、代表的なものを挙げておきます。

・MS明朝
・MSゴシック
・HGSゴシックE
・HGS創英角ゴシックUB(さきほどの<応用>で使用したのはこれです)

おすすめは、とにかく「×の文字が太いフォント」です。
得点表示にとって、最も避けたいのは、「遠くから見て見づらい」ということです。特に誤答数というのは、在籍教育機関などに比べ、試合展開に関わる重要な情報です。絶対に客席やプレイヤーから見やすくすることを追求しなければなりません。

また、背景を黒くする場合、安易に「×」を赤いフォントで書くのもやめたほうがよいでしょう。画面上では見えても、スクリーンに映すととたんに見えづらくなるケースは多いです。


↑このように表示するぐらいなら、記号の色は白にしておきましょう。

コメント

このブログの人気の投稿

基本①:「m○n×クイズ」の得点表示の作り方

参加者の苗字と名前を分離する/選手名を均等な大きさで表示する

勝ち抜け時に順位を表示する