Excel(エクセル)で日付や曜日が自動入力されるカレンダーの作り方 | サービス | プロエンジニア

    Excel(エクセル)で日付や曜日が自動入力されるカレンダーの作り方

    • このページをはてなブックマークに追加

    公開日:2018年06月28日 最終更新日:2019年06月17日

    前回の記事<<CELL関数でファイル名を取得して表示する方法【初心者のためのExcel入門】>>では、ファイルのパスを取得できるCELL関数の基本の使い方と、求めたパスからMID関数などを使用してファイル名の部分だけを切り出す方法などについてご紹介致しました。

    今回はスケジュールや工程管理に便利な、年や月を指定するだけで自動的に日付や曜日が入力されるカレンダーを作成するための関数についてご紹介したいと思います。

    ■説明に使用したExcelのバージョン:Excel2013

    目次

    1.カレンダーの日付部分を作成する

    1.1 DATE関数で日付を連動させて表示する

    今回は最終的に次のような表を作ることを目標として、手順をご紹介します。

    column_image7422_01

    日付の取得には、DATE関数を使用します。
    DATE関数の書式は次の通りです。


    DATE( 年, 月, 日)


    今回は、年と月を入力しさえすれば日付や曜日を自動で表示することができる形を目指しているので、年月を入力する場所を準備します。

    column_image7422_02

    これらをDATE関数に当てはめます。なお日付の部分については、1, 2, 3...などの数字をそのまま当てはめてもOKですが、今回は全ての行に同じ値を入力すればいいROW関数を使用してみました。


    DATE( 年を入力したセル, 月を入力したセル, ROW()-ヘッダの行数)


    ROW()で該当セルの行番号を取得し、そこからヘッダの行数を引くことで1から始まる連番を設定することができます。例えば前図のように年がB4に、月がD4に入力されている状況の場合、1日目は次のように入力します。今回ヘッダが5行目まであるので、ROW()から引く数字は「5」にします。


    DATE( $A$3, $C$3, ROW()-5)


    これを31行ぶんコピーします。すると31日ぶんの日付が「YYYY/MM/DD」の形で表示されました。

    column_image7422_03

    なお4月は30日までしかないので、31行目は「2017/5/1」と表示されました。

    column_image7422_04

    ※A3セルを$A$3と「$」を付けて記載することによって、縦や横にドラッグして関数をコピーする場合に自動で変化することを防いで(固定して)います。

    ▲目次へ戻る

    1.2 日付のフォーマット(表示形式)を変更する

    今回、日付は「2017/4/1」ではなく「4月1日」と表示させたいと考えていますが、この表示の形式は「セルの書式設定」で変更することができます。

    column_image7422_05

    表示形式を変更したいセルを全て選択して、右クリックメニューから「セルの書式設定」を選択します。

    column_image7422_06

    「セルの書式設定」画面が表示されたら、「表示形式」タブをクリックします。

    この画面で希望する「分類」と「種類」を選択しますが、今回は分類「日付」、種類「3月14日」を選択し、OKボタンを押します。

    column_image7422_07

    すると、月日の表示が「4月1日」などのタイプの表示になりました。

    なお日付のみを表示したいなどの場合も、同様に表示形式の種類から希望の形式を選択することで対応可能です。

    ▲目次へ戻る

    1.3 DAY関数とIF関数で不要な日付を空白にする

    前項までの状態では1月など31日まである月は問題ないですが、例の4月など31日までない月の場合に表示されてしまう翌月の日付の部分を空白にする処理が必要になります。

    その処理は、DAY関数とIF関数の組み合わせで実現することができます。

    DAY関数とは、年月日の情報から「日」の情報だけを取得する関数です。


    DAY(対象の日付)


    DAY関数に日付や日付の入ったセルを指定すると、結果にはその「日」の部分だけが抜粋された「1~31までの整数値」が表示されます。

    column_image7422_08

    これを利用することで、29~31日に該当するはずの部分に1~3などの翌月の日付が入っていれば空白文字に置き換える処理を行います。

    column_image7422_09

    条件次第で結果を置き換える処理には、IF関数を使用します。


    IF(条件式, 条件式がTRUEの場合の表示内容, 条件式がFALSEの場合の表示内容)


    IF関数を使用して、DAY関数の結果が何行目かと一致しなければ空白文字「""」を設定するには、次のように書くことができます。


    IF(DAY(対象の日付)=ROW()-5, 対象の日付, "")


    column_image7422_10

    こうして、5月1日の行を空白にすることができました。

    ▲目次へ戻る

    1.4 組み合わせた結果

    これらの関数を使って次のように組み合わせることで、月日の表示が一行で実現できました。


    IF(DAY(DATE( 年, 月, ROW()-N))=ROW()-N, DATE( 年, 月, ROW()-N), "")


    ※年を入力したセルを年、月を入力したセルを月、ヘッダの行数をNとする。

    column_image7422_11

    ▲目次へ戻る

    2.カレンダーに曜日を表示する

    2.1 曜日を表す表示形式「aaa」

    曜日の設定は、日付を指定して該当する表示形式を選択するだけで行うことができます。ただしデフォルトでは設定が存在していないので、設定を作成する必要があります。

    まず曜日を設定したいセルから、日付のセルを参照します。

    column_image7422_12

    このままだとデフォルトの「YYYY/MM/DD」形式で表示されるので、該当のセルを選択した状態で「セルの書式設定」を開き、「表示形式」タブを表示します。

    column_image7422_13

    分類の中から「ユーザ定義」を選択し、種類に「aaa」と入力します。すると自動的にサンプル欄に曜日(例では土)が表示されるので、OKボタンを押します。

    column_image7422_14

    こうして、曜日が自動的に設定されました。

    ▲目次へ戻る

    3.まとめ

    今回作成した表の月を変更してみると、無事自動で日付表示と曜日表示が更新されました。

    column_image7422_15

    予定表など毎月同じ形のカレンダーを使うものは、この自動で動く年間カレンダーを作っておくと毎月さらには毎年手入力で新たに表を作成する手間が省けるようになります。ぜひ活用してみて下さいね。

    • このページをはてなブックマークに追加

    おすすめ記事

  • OCTPASS

    ピックアップ

    フリーランス

    【Linux】インフラエンジニア★Webサイトのインフラ構築・運用サポート

    大規模Webサイトのインフラ構築・運用保守サポート および社内システムサポート、 Linuxサーバの構築...

    フリーランス

    【PHP】システムエンジニア★自社スマートフォン決済サービス開発

    月額単価 :50万円〜80万円

    自社内にて、スマートフォン決済サービスの 追加機能開発をお任せします。 工程:要件定義~テスト...

    正社員

    【JavaScript/HTML】社内SE|国内TOPクラス老舗メーカー★未経験可

    年収 :350万円〜450万円

    ◆自社内で構築したシステムの開発・保守・運用業務 ◆国内トップクラスシェアメーカーの新規システムの...

    株式会社TJMデザイン

    フリーランス

    【Linuxコマンド】社内SE・ヘルプデスク★統合宛名システムの維持管理、運用

    ・ユーザーからの問い合わせ対応 ・障害対応 ・業務システムの内容の勉強 ※ 教えて貰いながらシス...

    正社員

    【Linux】社内SE|インフラ環境構築・運用・NW管理等◎充実の福利厚生

    年収 :450万円〜800万円

    ◆自社サービス・社内インフラの運用担当 ◆若手社員から役員までの距離が近く風通しの良い組織。快適な...

    株式会社ネクストビート

    OCTPASS

    絞り込みメニュー

    絞り込みメニュー

    職種で探す

    SEACH_LISTjobcat257

    SEACH_LISTjobcat258

    SEACH_LISTjobcat259

    SEACH_LISTjobcat260

    SEACH_LISTjobcat261

    SEACH_LISTjobcat262

    SEACH_LISTjobcat263

    SEACH_LISTjobcat264

    SEACH_LISTjobcat265

    SEACH_LISTjobcat266

    SEACH_LISTjobcat267

    業種で探す

    雇用形態で探す

    勤務地で探す

    SEACH_LISTloccat391

    SEACH_LISTloccat394

    SEACH_LISTloccat403

    SEACH_LISTloccat413

    スキルで探す

    SEACH_LISTsklcat465

    SEACH_LISTsklcat466

    SEACH_LISTsklcat467

    SEACH_LISTsklcat468

    SEACH_LISTsklcat469

    SEACH_LISTsklcat470

    SEACH_LISTsklcat471

    こだわり条件で探す

    SEACH_LISTgoodcat337

    SEACH_LISTgoodcat338

    SEACH_LISTgoodcat339

    SEACH_LISTgoodcat340

    SEACH_LISTgoodcat341

    SEACH_LISTgoodcat342

    SEACH_LISTgoodcat343