わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Excelの「$」を含む式を使いこなそう

「みなさん,授業のページより,拡張子がxlsxのファイルをダウンロードし,Excelで開きましたか?
中身を簡単に説明します.3択問題3問を,10人が答えたという状況です.架空の話です.A列は,A1は空欄でA2からA11までが解答者番号です.B1,C1,D1は表のヘッダーで,第1問,第2問,第3問と書いてあります.B2から,D11までの長方形領域が,解答者番号ごとの解答で,a,b,cのいずれかの文字が並んでいます.
これを使って,各問題の正解者数と,解答者ごとの正解数を,手際良く求めることにします.『手際良く』というのは,問題数や解答者数が増えても,簡単に対応できることや,正解者数や正解数の集計のあとに,Excelへの記入に間違いがあるのに気づき,修正したら,すぐに集計の値も更新されることを意味します.
いろいろやり方も考えられますが,各解答者が行ったそれぞれの解答に対して,正解か不正解かを求め,そこから縦方向と横方向に見て集計するという方法をとることにします.ワークシートのE列から右を使用します.最初の人の最初の問題の解答は,B2のセルに表示されますが,その正誤判定の結果を,3つ右のセル,すなわちE2に表示させます.その後の集計のことを考えて,正解は1,不正解は0とします.
そういえば,3択問題3問の正解が何だったかを,言うのを忘れていました.架空の話なので,何でもいいのですが,とりあえず決めておくと,第1問はa,第2問はb,第3問はcです.この情報も,ワークシートに書いておきます.E1,F1,G1の3つのセルが空いているので,そこに書きましょう.E1を選択してから,あとはキーボードのみでa,Tab,b,Tab,c,Enterと打ち込みましょう.
次に,矢印キーの移動,またはマウス操作で,E2のセルを選択した状態にしてから,キーボードで,『=IF(B2=E$1,1,0)』と打ち込んでください.これは一字一句,間違えないでタイプしてください.『$』の文字は,Shiftを押しながら,テンキーでない方の数字の4で出ます.
そしてEnterキーを押すと,E2のセルには,1が表示されます.
Excelでは,基本的に各セルに打ち込んだ内容が表示されるのですが,『=』から始まる場合には,その後に書かれたものを式とみなして,その評価結果を表示させます.
ただし,打ち込んだ内容は,きちんと記録されており,編集もできます.ABCDEと並ぶ表のすぐ上で,バツとチェックとfxの書かれた箱のすぐ右です.いま(Enterキーを押したために)E3のセルを参照しているので,何も表示されていませんが,上矢印キーを1回押して,E2のセルを見ると,そこに『=IF(B2=E$1,1,0)』と表示されているのを,確認できるはずです.
その箇所をマウスでクリックするか,キーボードだとF2というキーを押せば,その『=IF(B2=E$1,1,0)』を編集することもできます.
この式の読み方を説明します.Excelでは,IFは関数となります.Cでは小文字でifと書き,制御文の一つでしたが,Excelでは大文字で綴って*1,関数です.カッコの中には,まず真偽判定の条件式,そして真のときの評価値と,偽のときの評価値を,カンマで区切って書く必要があります.IFは3つの引数をとる関数だ,と言うことができます.
条件式は,『B2=E$1』です.$の記号は貼り付けの際に重要な役割を果たしますが,式を読む際には無視して,『B2=E1』と考えましょう.これは『B2のセルの値と,E1のセルの値が,等しい』ということです.Cでは等号の演算子は==(イコール2個)で,代入の=(イコール1個)と区別しないといけないのですが,Excelの等号はイコール1個です.
ということで,E2セルに書いた式の意味は,『B2のセルの値と,E1のセルの値が,等しいならば1,等しくないならば0』となります.今回のExcelファイルでは,もともとB2のセルにaが書かれてあり,E1のセルには先ほど打ち込んだとおりaを格納しましたので,評価結果として,E2のセルには『1』が表示されます.
さて,3問ずつ10人で合計30個の解答について,一つ一つにこんな式を書くのは,とても効率が悪く,お勧めできません.かわりに,コピーと貼り付けを活用します.コピペです.コピペにも,良いコピペ・悪いコピペ・普通のコピペがあるのです.我々は良いコピペと普通のコピペを使いこなしましょう.冗談はさておき…
マウスを使う場合には,こうします.E2を参照している状態で,そのセルの右下に,目立つ点が表示されていると思います.マウスカーソルを近づけると,カーソルの形状が変わります.その状態で,ドラッグ操作をすると,貼り付けとなります.
E2の右下から,右に2セル分,ドラッグしてからボタンを離せば,E2,F2,G2の3つのセルが,1と0の並びとなります.そのままの状態で,G2の右下を持って下にドラッグし,G11のところまで移動してから,離せば,E2からG2までのセルをコピー元,E3からG11までの長方形領域をコピー先として,コピーが行われ,あっという間に,10行3列分の式の記入が完了となります.
マウスではなくキーボードを使いたいのなら,E2のセルにある状態から,Ctrl+Cでセルの式をコピーし,Shiftを押しながら右矢印を2回,そしてShiftを押したまま下矢印を9回,押しますと,10行3列分を選択した状態となり,そこで貼り付けのショートカットキーである,Ctrl+Vを押せば,30個分が1と0の並びになってくれます.
貼り付けによって,何が起こるかを,確認しましょう.まずは再び,セルの参照をE2に戻してください.表示は1ですが,fxの右の式は,自分で打ち込んだ『=IF(B2=E$1,1,0)』となっていますね.
ここで右矢印のキーを1回だけ,押してください.あ,Shiftは押さないように.それで,fxの右に表示されるのは,『=IF(C2=F$1,1,0)』となります.
E2からF2への貼り付けでは,列位置の相対関係を考慮した読み替えがなされています.
詳しく見ていきましょう.E2のセルの『=IF(B2=E$1,1,0)』に戻ると,そのセルから見たB2というのは,3つ左のセルのことですね.
そしてE$1について,$を無視するなら,E2の1つ上のセルと解釈できますが,後々のことも踏まえて,E列,つまり現在のセル(E2)と同じ列の上から1行目のセル,と理解しておいてください.
そんなE2の式を,1つ右のF2に貼り付けたら,F2から見て,『3つ左のセルの値』ということでC2と,『同じ列の上から1行目のセル』なのでF$1とを比較して,比較に際しては$は無視してF1となりますが,そして等しければ1,等しくなければ0にする,という式になればよいと分かり,実際Excelの内部でも,そんな読み替えがなされまして,F2の内容は『=IF(C2=F$1,1,0)』になるわけです.
またE2に戻して,『=IF(B2=E$1,1,0)』を表示させてください.
今度は,下のキーを押してみましょう.E3に移ります.Fxの右は,『=IF(B3=E$1,1,0)』になっていますね.キーを上,下,上,下と押せば,E2とE3のセルの式,どこが同じでどこが変わったかを,見ることもできます.
今度は,行位置に着目した読み替えが,なされています.E2の式で参照しているセルは,先ほど説明したとおりです.そのセルの式を貼り付けて,1つ下のE3に貼り付けるとですね…
E3から見て,『3つ左のセルの値』ということでB3と,『同じ列の上から1行目のセル』なのでE$1とを比較して,等しければ1,等しくなければ0にする,という式になればいいわけで,E3の内容は『=IF(B3=E$1,1,0)』なのです.
式の中の『B2』や『B3』が,それぞれ『B$2』や『B$3』でないのにも,注意してください.
もし,E2に『=IF(B$2=E$1,1,0)』と書いてあって,これをE3に貼り付けると,結果は『=IF(B$2=E$1,1,0)』になります.『3つ左の列の上から2番目のセルの値』と『同じ列の上から1行目のセル』を比較するからです.そしてこれは,2番目の解答者の第1問の正誤判定ではありません.E2の記載内容が適切でなかった,ということです.
ついでに,E2の式が『=IF(B$2=E$1,1,0)』で,これをF2に貼り付けたとしたら,列位置の相対関係をもとに,『=IF(C$2=F$1,1,0)』となります.
今回使用しませんが,『$』は,行位置の数値の前だけでなく,列位置のアルファベットの前につけることもできます.列位置の絶対参照となります.
E2の式の$の位置を変更して,『=IF(B2=$E1,1,0)』にしてから,コピーしてF2やE3に貼り付けてみてください.式はこう変わるだろうと予想し,貼り付けて,思った通りの結果*2になれば,$の有無で困ることはなくなると思います.
ここまでで,A1は空欄ですが,A列からG列まで,そして1行目から11行目までの各セルに,値が表示されました.ここから,『各問題の正解者数』と『解答者ごとの正解数』を算出しましょう.
各問題の正解者数は,E列,F列,G列の10個分の正誤判定結果のすぐ下,E12,F12,G12で集計することにします.E12に『=SUM(E2:E11)』と打ち込んでEnterキーで確定させ,そのセルをコピーして,F12とG12に貼り付けてください.
解答者ごとの正解数は,G列の1つ右のH列で,集計しましょう.H2に打ち込むのは『=SUM(E2:G2)』です.このセルを,H3からH11までコピーしてください」

  • 思うことあってスクリーンショットは入れていません.正誤判定・正解者数・正解数を記載したExcelファイルは,https://docs.google.com/spreadsheets/d/1XYnDUYZEObe_ODdF5ik21CQ6SritDpZEeN7YkWXInNU/edit?usp=sharingより閲覧やダウンロードできるようにしました.
  • ある回の授業で,サイズはもっと大きいですが上記と同様のExcelファイルをもとに集計させました.「指示どおりに打ち込んだのに合計が0になる」という問い合わせには,以下の2つのパターンがありました.
    • E2に「=IF(B2=E$1,"1","0")」と打ち込んで,貼り付けていました.正誤判定は1と0の並びとなりますが,評価結果は「1という文字列」「0という文字列」のため,SUM関数では足されず,0になります.
    • 正解(上記ではE1,F1,G1のセルに書く値)を日本語入力で打ち込んでいた学生の画面では,aとaは一致していないので不正解扱いとなり,正解者数0となっていました.

*1:関数名や列の英字は,小文字で打ち込んでも,大文字に変換されます.

*2:F2は「=IF(C2=$E1,1,0)」,E3は「=IF(B3=$E2,1,0)」になります.