第4回 - 2019/10/18

関数を利用した処理


数値処理

統計処理については、別のときに説明をします。以下に、代表的なものを紹介します。

文字列を処理する関数

日付を処理する関数

日付時刻データについて

日付を処理する関数

条件判断を行う関数

IF(条件式, TRUEのときの値, FALSEのときの値)

その他に条件式に使われる関数

ワークシート作成例


本日の演習

練習問題4-1

以下のような結果を得られる計算式を作成する

練習問題4-2

日付を入力したセルを参照して、その翌月の月末の日を求める式を入力すること。ヒントはEOMONTH関数。年を越してもきちんと計算する事を確認すること。さらに、「翌月の初日」を求める式を入力すること。

練習問題4-3

名前から姓と名を取り出す式を関数を使って作成するが、以下の動作を実装すること。

練習問題4-4

1つのセルに今日の日付を入力し、オートフィルで下に広げると、1日ずつの日付が自動的に入力される。20個以上のセルに広げておく。そして、その範囲に条件付き書式を設定して、日曜の場合のセルの背景を赤いものに、土曜の場合のセルの背景を青いものにすること。

条件付き書式は、「ホーム」タブの「スタイル」グループにある「条件付き書式」から機能を呼び出します。「ルールの管理」「新しいルール」あたりを利用すると良いでしょう。


解答

この章の解答のワークシートはダウンロードできるようにしておきました。こちらからダウンロードしてください。

練習問題4-1〜4-3については以下の通りです。まず、正解はこれ1つではありません。ここの回答も状況に不正解になる可能性もあります。100%の解答が常にあるとは限りません。特に、21世紀から何日目かを求める解答については、「1秒追加」するのはやりすぎかもしれませんが、ここではROUNDUP関数をともかく使うということを優先してこうしました。なぜ、1秒追加するのかは、0時0分0秒で間違いが発生するからです。また、姓名から名前を取り出す場合、RIGHT関数でももちろんかまいませんが、MID関数を使えば「最初の空白より後の文字すべて」という取り出し方ができます。取り出す長さをLEN関数で求めている点にも注意を払いましょう。4-3はちょっと難しいですが、こういう場合は途中の結果を順次セルに分けると分かりやすいかもしれません。ポイントは、C19のセルのIF文でしょう。もちろん、OR関数を思いついたかもしれませんが、ここでは「スペースがない」「半角である」「全角である」の3通りにしかならないことを考え、それぞれの場合でどの値が欲しいのかを考えてみると、これが1つの解答になるでしょう。

問題文に「ないしは」があるのでORかなと思うかもしれません。この式をORあるいはANDを使って書けるのですが、前の回答の方がシンプルでわかりやすいでしょう。なぜ、「ないしは」なのにORじゃないのか? ORは、複数の条件から判定するときに使います。ここでの「もしくは」は、半角ないしは全角ということで、値のいずれかを使うということです。半角の場合もあれば、全角の場合もある、という状況が変わりますということであり、複数の条件の判定をしているのではありません。つまり、ORは直接的な値の選択といった用途には使えないのです。いきなりフェイクな練習問題ですみません。なお、<>は、=の逆の結果を得る論理演算子で、左右が異なる値ならTRUEになります。2つの条件式のANDは、同様にORでも記述できます。ド・モルガンの法則です。

練習問題4-4はいきなり「条件付き書式」をやってもらいました。ある意味、こうした機能は習うより慣れろ…なんではありますが、Excelのこの機能はいきなり使えと言われても分かりにくいと思いますので、手順を示します。条件付き書式は、セルの書式を条件に応じて設定するという機能ですが、ここでは条件が「100以上」とかいったシンプルなものではなく、WEEKDAY関数の結果をもとに考えないといけないという点があります。そして、そのときに設定する式のセル参照の方法をどうすればいいのかということも問題になるでしょう。

まず、日付が入力されたセルを選択しておいて、「ホーム」タブの「スタイル」にある「条件付き書式」をクリックしてメニューを表示し、「ルールの管理」を選択します。

すると、ルールの管理のウインドウが開きます。ここで「新規ルール」ボタンをクリックします。

新たなルールを定義しますが、上部のリストからは「数式を使用して、書式設定するセルを決定」を選択します(明らかに日本語がおかしいですね。きっと正しくは「数式を使用して、セルの書式設定を決定」でしょう…)。

下半分のところには、式として「=WEEKDAY(A1)=1」と入力します。奇妙な式と思うかもしれません。最初の=は「式の始まり」を示し、後の=は条件判断のための演算子です。つまり、「A1の曜日が1かどうか」を判定しているのです。今、セル範囲はA1:A26ですが、設定する式は左上のセルのセル番地を相対参照で記述します。すると、A2のセルの書式は「WEEKDAY(A2)=1」の結果に従い、A10のセルの書式は「WEEKDAY(A10)=1」の結果に従い…という感じで、結果的には「それぞれのセル」に対しての式が計算されて指定された書式が設定されたりされなかったりということになります。式の最初の=がないと、「="weekday(a1)=1"」のように、式を文字列として扱ってしまいます。

「書式」ボタンをクリックして、文字の色が赤になるように設定して、OKボタンをクリックします。

土曜なら青になるという設定も、同じ手順で追加します。もちろん,式は「=WEEKDAY(A1)=7」です。「適用」をクリックすると、OKでダイアログボックスを消さなくても結果を見る事ができます。

OKをクリックして、ダイアログボックスを消すと、確かにセルの値に応じて書式が設定されています。