- ベストアンサー
エクセルで日にちを自動的につける方法
スケジュール管理のため日にちの付いたものを作成しています A1に【2007】と記述 A2に【6】と記述 C1に【=DATE($A$1,$A$2,1)】と記述 C2に【=CHOOSE(WEEKDAY(C1),"月","火","水","木","金")】と記述し、以降繰り返す。 D1に【=C1+1】と記述し、以降繰り返す。 という指示をしました。 思ったような結果が得られないので教えてください。 行いたいことは 土日を抜かした日にちを導き出したいのです。 もし土日を抜かすことができないのであれば、土日のみ色をつけ認識できる方法を教えてください。 以上よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
土日、祝日を除いたカレンダを作成したいのですか? それであればWORKDAY関数を利用するのが良いと思います。ただしWORKDAY関数を利用するには「ツール」→「アドイン」→「分析ツール」にチェックをつけておく必要があります D1セルに =WORKDAY(C1,COLUMN()-2,Sheet2!A1:A20) と入力し右方向にコピーします。 この式でSheet2!A1:A10には祝日のリストがあるものとします。(2007/7/16 のような日付形式で指定します) 曜日はもっと簡単に出せます。C2セルに =C1 そしてC列の書式を aaa にしてみてください。
その他の回答 (4)
- Cupper
- ベストアンサー率32% (2123/6444)
>私がやりたいことはA1の年とA2の月を見て >自動的に出力される表を作りたいのです。 であれば、C1の記述を =DATE(A$1,A$2,ROW()) で日にちを連続して作成できます。 ※31日まである月や2月などは考慮しません(汗 あとは ANo.4で回答した通りに列を読み変えてください。
補足
回答ありがとうございます。 =DATE(A$1,A$2,ROW())と記述すると日にちが4日から 始まってしまいます。 ANo.4の回答の通り、ただいま作成中です。
- Cupper
- ベストアンサー率32% (2123/6444)
そのアルゴリズム(組み立て方)では土日も含んでしまいますね。 D列で日にちをカウントさせるように考えていらっしゃると読んでみます。 (その割りには、C1に =DATE($A$1,$A$2,【1】)と日にちが増えない記述になっていますが・・・) 縦に日にちを並べるのであれば、そのまま一ヵ月分並べてしまいましょう。 そのほうがシンプルになりますし、あとで加工や編集を行ないやすくなります。 ■曜日の表示は「セルの表示形式」で行うと良いです。 日にちがA列、曜日がB列とした場合、B1には =A1 などと入力して、「セルの表示形式」からユーザー書式に aaa を設定してみてください。 曜日が表示されるようになります。 ※ aaa で "金"、aaaa とすると "金曜日" などと表示されます。 操作: B列を選択する ↓ 書式 → セル → 表示形式(タブ) → 分類(項目)から「ユーザー書式」を選択 → 種類(項目)直下の入力欄に aaa を入力 → OK ■曜日に応じて色を変えるのであれば、「条件付き書式」です。 上記の場合、セルの中身は日付けのシリアル値(数値)ですので文字として判定させられません。 そのためWEEKDAY関数を使用します。 操作: A列を選択する ↓ 書式 → 条件付き書式 → 条件1(項目)で「セルの値が」を「数式が」に変更 → 右の入力欄に =WEEKDAY(A1,2)>5 を入力 → 書式ボタンを押して土日の表示色を選択する → OK → OK 同様にB列も設定してください。 土日の色が設定された書式に変わる事を確認してください。 ■祭日も色を変更したいのであれば、条件付き書式に条件を追加します。 操作: Sheet2のA列などに祭日のリストを作成してください。 (6月は祭日が無いため6月15日を仮に入力してください) 条件付き書式では他のシートを参照することはできませんので範囲名を設定します。 Sheet2のA列を選択して左上の名前ボックスに 祭日 と入力して範囲名を付けてください。 条件付き書式を設定する欄を追加します Sheet1のA列を選択します。 ↓ 書式 → 条件付き書式 → 下にある「追加」ボタンをクリック → 条件2の入力欄に =VLOOKUP(A1,祭日,1,FALSE) を入力 → 書式ボタンを押して土日の表示色を選択する → OK → OK 同様にSheet1のB列も設定してください。 6月15日、金 の色が設定された書式に変わる事を確認してください。 ちょっと面倒な操作が続きましたが、見た目がシンプルなのは後で編集や加工を行なうときに非常に操作しやすいのでお薦めです。 ※WEEKDAY関数、VLOOKUP関数の詳細はExcelのヘルプを参照してください。
- FEX2053
- ベストアンサー率37% (7991/21373)
考えてみれば、土日は必ず6日後にやってきますよね。 ですので、5日パターン(月~金)で日付を作っておき、5日をブロック にしてコピーすれば出来てしまうハナシなわけです。 ゴチャゴチャした式を考えるより、まず 6/4 6/5 6/6 6/7 6/8 =A1+7(A1が6/4なら6/11になりますよね) =A2+7(A2が6/5なら6/12になりますよね) =A3+7 =A4+7 =A5+7(A5が6/8なら6/15になりますよね) =A6+7(A6はA1+7ですから6/11、その7日後なので6/18です) =A7+7(A7はA2+7ですから6/12、その7日後なので6/19です) : こうすれば、5日ブロックで日付が勝手に出来ますよ。 キモは始めに5日分の日付を入れておき、6日目から+7日するという点です。
補足
回答ありがとうございます。 私の質問の仕方が不十分だったと思います。 私がやりたいことはA1の年とA2の月を見て 自動的に出力される表を作りたいのです。
- zap35
- ベストアンサー率44% (1383/3079)
#01です。D1セルの式を訂正します =WORKDAY($C$1,COLUMN()-2,Sheet2!A1:A20) もしくは =WORKDAY(C$1,1,Sheet2!A1:A20) にしてください
お礼
よくよく見て試したところ この方法で正しく出力されました。 ありがとうございます。
補足
回答ありがとうございます。 早速試してみましたところ土日は問題なく解決しました。 祝日リストというのはシート2のA1からA20までに記述すればよいのですか? 2007/07/16などを追加したのですが16日は表示され、 うまく出力されません。