« 明日から夏休み♪♪♪ | トップページ | 8月9日のかき氷大会のお知らせ »

2018年7月25日 (水)

そうだ カレンダー、作ろう (超力編)

札幌市(厚別区・西区・手稲区・東区・白石区)・江別市(野幌)・小樽市・千歳市
の方に親しまれているパソコン教室 YESパソコン学院
初心者 から   資格取得MOS  趣味の講座 実施
MOS試験も当校で受験可MOS試験校
高校生 大学生 主婦 社会人 シニア 全ての方に対応できます








本日のブログはイオン札幌元町校です
最近、私が執筆したブログが「凄い!」「説明が分かりやすい!」「テキストにして欲しい!」等、他の教室の先生方からも評価をいただきました
願ったり叶ったりです。生徒様の為になるブログを追い求め続けて、行き着いた答えがこれでした。多くの人の目に留まれば、続けてきた甲斐があったというものです
これから先も、生徒様の為になるブログを追い求めて行きたいものです


突然ですが、前回のブログはご覧になったでしょうか
まだご覧になってなければ、まずはこちらからご覧ください
今回のブログは前回の続きとなっています


カレンダー作り講座、第二弾です


前回は、1月分だけひとまず形だけ完成させたという所で終わりました

21


今回は、この1月分のカレンダーをコピーして、残り11ヶ月分を作れば、1年分のカレンダーを作ります



という風にはしません


コピー貼り付けでも良いかと思いますが、コピー貼り付けだと、その後2月~12月までの日付を入れなおさなくてはならなくなり、二度手間です
手入力で済む話ですが、中にはそんな手間暇の掛かる事をしたくないという方もいらっしゃるかと思いますし、自動で日付を変える方法もあるんでしょ?とお思いの方もいらっしゃると思います


その通りです


それを可能にさせるのが今回のブログのテーマとなっています
前回までのブログはほんの序章に過ぎません
ここからが本番と言っても過言ではありません

どういう風に作りたいかと言いますと、例えば上の「1月」を「2月」等他の月に書き換えると下の日にちも自動で変化するように出来たらと思っています
そのような事が果たして可能なのかと思う方もいると思いますが、可能です。関数を使えば


今回は、それを実現させるためにIF関数とWEEKDAY関数を使います


IF関数は過去の記事で紹介した事があるので説明を省かせていただきますが、WEEKDAY関数は初めて紹介する関数なので、最初に説明します

WEEKDAY関数とは、日付から曜日を割り出す関数で、日付に対する曜日を数字で表示させる事が出来る関数です
例えば日曜日だったら「1」、土曜日だったら「7」といった具合にです
この説明だけだと分かりづらいと思うので、百聞は一見に如かずという事で、早速使ってみる事にしましょう


まず、最初に、前回まで作ったカレンダーを開きます
WEEKDAY関数を使うにあたって、下準備から始めます
先述の通り、WEEKDAY関数は日付のデータを利用する関数です
ですので、まず日付のデータが無ければなりません
どうすれば良いのかと言いますと、前回「1月」と入れた場所がありますが、(ここでいうB列2行目のセル)ここのデータを日付のデータに変えてしまいます

今から「1月」を書き換えますので、カーソルは「1月」の場所(B列2行目)に移動します

11


移動出来ましたら、その場所に「2019/1/1」と入力しましょう(「1/1」と入力すると2018年で確定してしまう為、年数から入力します)

12_3


入力したら、Enterボタンで確定しましょう

14_2

確定しました

これで日付のデータにはなりましたが(上画像の赤い四角の枠で囲ってある場所に注目)、このままだと「2019/1/1」という風に表記されてしまいますので、これを更に表示形式を使って「1月」という表記に戻します
表示形式の説明も過去の記事で書いてありますので説明は省略します
先程「2019/1/1」と入力したセル(ここではB列2行目)を選択し、表示形式の設定をします
「日付」右の▼ボタンをクリックし、一覧から「その他の表示形式」をクリックしましょう

15

すると「セルの書式設定」ダイアログボックスが開きますので、「分類」の一覧から「ユーザー定義」を選び、クリックします

16

その後、「種類(T):」の欄に「m"月"」と入力しましょう
何故「m"月"」なの?というのも、過去のブログで説明済みですので、省略します

17

設定出来たらOKボタンをクリックしましょう

18

出来ました
ちゃんと「1月」という表記になっていれば成功です

ちなみに余談ですが、「1月」の「1」を半角ではなく、全角で表記したいという強いこだわりがある方は、「m"月"」の前に「[DBNum3]」を付けてあげましょう
数字が全角で表示されるようになりますよ

下画像が入力例です。参考までに↓

19



これで下準備は完了です
それでは本日のメインテーマとなる関数をこれから入れていきましょう

01


まず、最初は「日」の下のセルを選択しましょう(ここではB列4行目です)
次にfxボタンをクリックして、「関数の挿入」ダイアログボックスを表示します

02_2

開きましたら、最初にIF関数を入れますので、「IF」関数を見つけてクリックしましょう
最初は「最近使用した関数」のみの表示となっていて、最後に利用した関数が10件表示されています
その中にIF関数がもし表示されていなければ、▽ボタンをクリックして、表示を「すべて表示」に切り替えましょう
すると全ての関数名がアルファベット順で表示されますので、その中から「IF」関数を見つけましょう
この時、キーボードの「A」~「Z」までのボタンをどれか1つ押すと、その頭文字の場所まで移動します
なので「I」を押せばすぐに「IF」関数を見つける事が出来ます

03

06_2

「IF」関数を発見出来たら、下のOKボタンをクリックし、IF関数の設定に入りましょう

07

上画像のように、IF関数の設定画面になったと思います
この画面に進んだら、まず論理式の入力ですが、この論理式の入力欄にWEEKDAY関数を入れていきます

「論理式」の入力欄にカーソルがある事を確認し、左上の「IF」と書いてある欄(名前ボックス)の右側の▼ボタンをクリックしましょう

08_2

すると、関数名が10件程表示されます
その中に「WEEKDAY」があれば「WEEKDAY」をクリック
もし無ければ、「その他」の関数からクリックし、「WEEKDAY」関数を探しましょう

09


「WEEKDAY」関数の挿入を確定すると、下の画像のようになります

10_2


数式バーには、IF()のかっこの中に「WEEKDAY()」という表記が加わり、
関数の入力画面も、IFから新しくWEEKDAY関数の入力に変わっています
まず最初に入れるのが「シリアル値」という場所です
下の方に、「日付に対応する曜日を1から7までの整数で返します。」とあります
このシリアル値の所に、先程書き換えた「1月」のセル番地を入れます
ここではB列2行目のセルに入力しているので、B列2行目のセルをクリックします
その後、絶対参照をしますので、キーボード「F4」ボタンを押します
するとBの左側と2の左側に「$」記号が入り絶対参照の設定になります

20

次に「種類」を入力する欄にカーソルを移動します

21

この種類の場所には、戻り値を入れます。1~3、いずれかの数字を入れて指定します
分かりやすく言えば、週の基準を1~3のいずれかの数字を使って指定します

つまりどういう事かというと、
「1」と入れれば日曜日を1、土曜日を7という数字で処理し、
「2」と入れれば月曜日を1とし、日曜日を7で処理
「3」と入れれば月曜日を0、日曜日を6で処理する事になります



一応、早見表も作りましたので載せておきます
WEEKDAY関数を利用するにあたっての参考にご利用ください

22_4

ちなみに今回は「1」を入れます
日曜日を1番とカウントした方が、カレンダーとしては1番使いやすいからです
(余談ですが、空欄にしても「1」と同じ扱いになります)

所で、下の方に「=3」という表記があります

23

この番号が曜日を表わす番号となっています。3という事はつまり火曜日という事ですね
2019年の1月1日は火曜日なので数字は「3」の値で出力されます
この数字が日付を入れる布石になると言うわけです

では、WEEKDAY関数の入力はこれで終わりですので、IF関数の入力画面に戻ります
数式バーに書いてある「IF」の部分をクリックすれば「IF」画面に戻る事が出来ますよ

24

無事、入力出来たら論理式の欄にカーソルを移動しましょう
先程入力した「WEEKDAY($B$2,1)」が入った状態になっています

25

この続きに「=1」と入れます
その後、真の場合に「1」と入れ、偽の場合に「""」と入れます

26

この式の意味を大雑把に説明すると、
WEEKDAY関数で出力した数字を、1と比較し、同じ値だったら「1」と入力、そうでなければ空欄にする
という意味になります

先程、WEEKDAY関数では「3」と出ました
これは2019年の1月1日が火曜日であるからです
論理式に入れた「=1」の「1」とは日曜日の意
つまり2019年の1月1日がもし日曜日だったら、B列4行目には「1」が入りますが、今回はそうでない為、B列4行目は空欄になります

OKボタンで確定しても、B列4行目には何も入力されません。それで良いのです

27

それでは、早速入れた数式を土曜日の日付(ここではH列4行目)までオートフィルしてコピーしましょう

28


何も入力されません



当然ですね。数式は全部同じなのですから
オートフィルした後は、お手数ですが、「=1」の部分を書き換えなければいけません
例えば、月曜日だったら「=2」に、火曜日だったら「=3」という具合にです

どこを書き換えれば良いか、鋭い方ならすぐピンときた筈です

29

正解はここです
この赤い枠線で囲ってある部分を、C4から「2」、「3」…と順番に書き換えます
書き換えていくと……

30

D列4行目のセルに「1」と入力されます
これで、1月1日の入力が出来ました。しかしこれでは肝心の他の日付が入りません
この関数を、また更に改造しなければなりません
道のりは思ったより険しい…

気を取り直して、C列4行目のセルを選択しておきます

31

選択出来ましたら、数式バーに入力されている数式をドラッグで選択し、切り取ってしまいましょう

32

切り取った後は、数式バー左側の「fx」ボタンをクリックし、表示された関数一覧から「IF」関数を選択し、OKボタンをクリックしましょう

IF関数入力の画面に入りましたら、早速先程切り取った数式を「真の場合」の入力欄に張り付けしましょう
もし下画像のように先頭に「=」が入っていれば必要ないので消しておいてください

33

その後、論理式の入力欄に「B4=""」と入れ、偽の場合の入力欄には「B4+1」と入れておきましょう


すると「IF(B4="",IF(WEEKDAY($B$2,1)=2,1,""),B4+1)」という数式になります

この数式の意味を大雑把に説明すると、

左側の日付がもしも空白だったら、2019年1月1日の曜日を番号に変換し、その番号が「2」だったら「1」と入力。そうでなければ空白にする
もし左側の日付が空白ではなく既に数字が入力された状態なら左側に入力されている数字に「1」をプラスする


という意味になります
B4のデータは空白の状態になっているので、WEEKDAY関数の数式が働きます
2019年1月1日は火曜日だからWEEKDAY関数によって「3」に変換されます。その為結果は空白になります

なのでOKボタンをクリックしても、結果は空白で何も表示されません

35

後はオートフィルで数式を土曜日(H列4行目)までコピーして、先程と同じ様に書き換えましょう

36

火曜日以外の数字もちゃんと入りました
これは火曜日の日付に「1」が入った事によって「空白でないデータ」と認識されるようになり、水曜日以降のセルの数式は左側のセルのデータに「1」をプラスするだけの数式に変わった為です

37

後は、下の行のセルにも同じように書式をコピーしましょう。オートフィルは右にではなく下に向かってオートフィルです


そうすればカレンダーの出来上がり



…になると思っていました


38_2



この結果を目の当たりにするまでは…




1月は31日で終わりの筈が、40日まで出て来てしまいました

先述の通り、この数式は左のデータを1ずつ足して行くだけなので、31日を超えてもそのまま1をプラスし続けてしまいます

困りました
しかしご安心ください。方法はあります

ある関数を使用すれば解決する事が出来ました
そこで問題です。その関数とは一体何でしょう?

正解は次回発表します。それまで考えてみてください
ちょっと難しい問題ですが、考えて頭を働かせる事も勉強です

今回は長くなってしまったのでここまでにします。本当は条件付き書式を使って祝日の日を自動で赤に設定する方法なんかも教えたかったですが、次回までのお預けとします


12月でシリーズ完結の予定でしたが、このペースで本当に完結するのだろうか…と一瞬そんな不安が頭をよぎりましたが、予定通り12月までには完結させる目標です。乞うご期待

ここまで読んで頂き誠にありがとうございました。また次回お会いしましょう。再見!










☯☯

YESパソコン学院 イオン札幌元町校

HP:http://www.yes-n.co.jp/classfeatures/hokkaido/motomati.html

☎:011-792-5390

✉:
i-motomachi@yes-n.co.jp

« 明日から夏休み♪♪♪ | トップページ | 8月9日のかき氷大会のお知らせ »

イオン札幌元町校」カテゴリの記事