roy > naoya > 情報リテラシーII > (8)表計算[3]-絶対参照と論理関数
(8) 表計算[3]-絶対参照と論理関数
[1]今日のファイル
[2]表示形式
A | B | C | |
1 | 0.1 | 0.3333 | 0.33 |
2 | 10% | 0.33 | |
3 |
0.1は10%と同義である。通常は0.1と入力をすればそのまま0.1と表示されるが、目的によっては10%と表示した方がよい場合もある。このような表示形式の変更が容易にできるようになっている。
表示桁数も自由に設定することができる。0.3333333・・・・というような割り切れない値の場合、表計算ソフトでは小数点以下第何位まで表示されるかは、セルの幅に依存する。上図でB1とC1はいずれも0.33333333・・・・・が入力されているが、C1はセルの幅が狭いために小数点以下第2位までしか表示されていない。表計算ソフトでは必要に応じて表示する桁数を減らし、B2のようにセルの幅に関わらず表示させる桁数を減らすことができる。
[3]表の作成
各セルに値を入力した後で罫線を引けば表になる。しかし、セルの幅が狭いためにセル内に値を表示しきれない場合がある。この場合は列の幅を変更する必要がある。
変更をする場合は、列の境界線(例えばC列の幅を調整するのであれば[ C ][ D ]の間の境界線)をクリックして左右にドラッグする。
境界線をダブルクリックすると、ちょうど良い幅に変更してくれる。
[4]列の幅の調整
列幅の調整方法はいろいろあるが、一番簡単な方法を確認する。A列やB列と書かれている列番地の境界線にマウスカーソルを合わせ、クリックしたまま左右に動かすと列幅が調整できる。複数列を選択して列幅変更を行うと、選択した列が全て同じサイズに変更される。
今回は関係ないが、列と列の境界をダブルクリックすると、印刷をしたときに文字や数字が途切れない最適な幅に設定される。
[5]相対参照と絶対参照
相対参照を使うことで、式をコピーして他のセルに複写することが容易にできる。同じ計算を100回繰り返す場合、最初の1行目だけ式を書いておけばよいことになる。しかし、この相対参照がうまく使えないようなケースもある。まずは以下の例を見てみよう。
A | B | C | |
1 | 名前 | 得点 | 50 |
2 | 一郎 | 30 | -20 |
3 | 二郎 | 50 |
ここではA列に名前、B列にテストの点が入力されている。C1には平均点が記載されている。ここでC2以降で平均点との差を求めることにする。C2には「=B2-C1」と入力し、計算結果の-20が表示されているものとする。
では、先ほどと同様にC2をコピーしてC3に複写してみよう。二郎さんは50点をとっており平均点と同じなので0になるはずである。しかし結果は70になる。セルにどのような式が入力されているか調べると「=B3-C2」となっていることが確認できる。
セル参照を用いて式を書いた場合、コピーして貼り付けると参照するセルも変化する。1つ下のセルに複写したため参照するセルもそれぞれ1つ下に移動している。これは正しい働きであるが、このケースでは参照するセルが変化すると都合が悪い。より厳密に言うと、B2は1つ下のセルに移動してB3に移動してほしいが、C1は1つ下のC2に移動するとまずいことになる。
式を複写した際に参照するセルを変化させない方法もある。自動的に変化するのが相対参照であるが、固定する方法を絶対参照という。
絶対参照は以下の3種類がある。手前に$をつけることで、つけた部分を固定することができる。
- $C1:列(C)のみ固定する。式を横に複写する場合に有効。
- C$1:行(1)のみ固定する。式を縦に複写する場合に有効。
- $C$1:行列いずれも固定する。式を全く別の場所に複写する場合に有効。
今回は下に複写した際にC1がC2に変更しないようにしたいため、1を固定する必要がある。よってC2に「=B2-C$1」と書き、C3に複写すればよい。
$は手入力でつけても良いが、C1セルをクリックした後でShift + F4キーを押すと、$C$1→C$1→$C1→C1と、$の位置が順に変化する。
[6]関数(6) if
A | B | |
1 | 1 | |
2 | 2 | |
3 | 3 | |
4 | 1 | |
5 | 4 |
上記は4択問題に対する5名の回答であると仮定する。正解が1の場合、2名が正解で残りの3名は不正解となる。いちいち「正解」「不正解」と入力していくのは大変なので、これも関数を使って何とかしてみよう。例えばB1のセルには次のように書けばよい。
もしもA1が1ならば正解と表示する。そうでない場合は不正解と表示する。
これは「A1は1である」という命題に対する真偽の判断となる。もしも真であるならば「正解」を表示し、偽であるならば「不正解」と表示する。真偽判断に用いる関数がifである。if関数の基本構造は以下の通りとなる。
=if(条件式,真の場合,偽の場合)
()内に記載するのは3つである。条件式は論理式と呼ぶ場合もある。それぞれの境界はカンマとなっていることに注意が必要である(OpenOfficeの場合はカンマではなくセミコロンとなる)。今回のケースでは以下のように書く。真の場合、偽の場合に表示するのは数字ではなく文字であるため""をつけている。
=if(A1=1,"正解","不正解")
Enterを押すと、真偽の判断が行われB1には正解と表示される。
なお、真の場合、偽の場合に表示する値が数字の場合には""は不要である。
=if(A1=1,1,0)
if文の条件式の書き方
- A1が2である:A1=2
- A1とA2が等しい:A1=A2
- A2がB3以上:A2>=B3
- A2が10を超える:A2>10
- A3が20以下:A3<=20
- A3がA5未満:A3<A5
- A4が100:A4=100(数字なので""不要)
- A4がりんご:A4="りんご"(文字なので""必要)
[7]ifの入れ子
A | B | |
1 | 70 | |
2 | 85 | |
3 | 45 | |
4 | 65 | |
5 | 90 |
先ほどの例では「正解」「不正解」の2通りしかなかったが、さらに複雑な場面もある。例えば次のようなケースを考えてみよう。
- 80点以上:A
- 70点以上:B
- 70点未満:C
if関数はある条件式を記述し、それを満たす場合と満たさない場合という2つの選択肢しか記述することができない。このため単純にifを使うだけでは上記の問題を解決できない。このような場合はif関数を入れ子にする。具体的には以下のように書く。
=if(A1>=80,"A",if(A1>=70,"B","C"))
A1が80以上という条件式を満たす場合、Aが表示される。満たさない場合は2つ目のif関数が適用され、2つ目の条件式のA1が70以上であるという条件式を満たすかどうか判定が行われる。満たす場合はBが表示され、満たさない場合はCが表示される。このようにif関数を2つ入れ子にすることで3種類の処理を行うことができる。処理内容が4つある場合はif関数を3つ入れ子にすればよい。