- ベストアンサー
「月」を入力し「日」「曜日」を表示したい
エクセル2007を使用しています。 エクセルで表を作りたいのですが、表示したいのは、 ・年と月(1箇所) ・すべての日と曜日 です。 できれば、「月」だけ変更すれば、「日」「曜日」が連動して変わるように できたら最高です。 アドバイスお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
◆サンプルですので、参考にしてください 【予定表の作成】 1)祝日一覧を作成して、「祝日」と一覧に名前を付けます 2)A1に「西暦年」、A2に「月」を入力します 3)【1日の入力】A5に、=if(COUNT(A1,A2)<2,"",DATE(A1,A2,1)) と入力して、 4)マウスを右クリックして、「ショートカットメニュー」の「セルの書式設定」を選択して 5)「表示形式」→「ユーザー定義」にして「種類」に、 d と入力します 6)【2日~の入力】A6に、=IF(A5="","",IF(MONTH(A5+1)=$A$2,A5+1,"")) と入力して、ユーザー定義で、 d として下にコピー 7)【曜日】B5に、=A5 と入力して、ユーザー定義で、 aaaまたは、(aaa) と入力して、下にコピー 【土日祝日の色づけ】(EXCEL2007以降) 8)A5:C35の範囲を指定して、リボンの「ホーム」タブ→「スタイル」グループ→「条件付き書式」ボタンを選択して、 9)「新しいルール」→「数式を使用して、書式設定するセルを決定する」の「次の数式を満たす場合に値を書式設定」に 10)=WEEKDAY($A5)=7 と入力して、 11)右下の「書式」をクリックして、「塗りつぶし」で「青色」指定して、OK 12)もう一度、手順8)~9)を行い、=OR(WEEKDAY($A5)=1,COUNTIF(祝日,$A5)) と入力して、 13)右下の「書式」をクリックして、「塗りつぶし」で「赤色」指定して、OK ※EXCEL2003以前は、 【土日祝日の色づけ】 8)A5:C35の範囲を指定して、メニューバーの「書式」→「条件付き書式」を選択して、 9)条件1の下の「セルの値が」を「数式が」に変えて、その右に 10)=WEEKDAY($A5)=7 と入力して、 11)右の「書式」をクリックして、「パターン」で「青色」指定して、OK 12)もう一度、手順8)~9)を行い、=OR(WEEKDAY($A5)=1,COUNTIF(祝日,$A5)) と入力して、 13)右の「書式」をクリックして、「パターン」で「赤色」指定して、OK ◆2月は28日まで表示され、もちろん3月は31日まで表示されます
その他の回答 (4)
- be_silent
- ベストアンサー率39% (117/300)
一例ですが、参考にして下さい。 ワークエリアを使わないで関数のみで行う方法ですが スッキリする反面、少々面倒臭いです。 A1に表示させる年月の「平成 23 年 3 月」というように 間にスペースを入れて入力します。 以下をそれぞれのセルにコピペする A2="1("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+0,7)+1,1)&")" B2="2("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+1,7)+1,1)&")" C2="3("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+2,7)+1,1)&")" D2="4("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+3,7)+1,1)&")" E2="5("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+4,7)+1,1)&")" F2="6("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+5,7)+1,1)&")" G2="7("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+6,7)+1,1)&")" H2="8("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+0,7)+1,1)&")" セル=”*( この*の部分が日付になります。 例:D2="4(" 4日 これを28日までドラッグしてあげればご希望の動作が実現し、 29日にあたるAC2セルに =IF(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2)+1,1)-DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1)>=29,"29("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+0,7)+1,1)&")","") 30にあたるAD2セルに =IF(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2)+1,1)-DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1)>=30,"30("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+1,7)+1,1)&")","") 31日にあたるAE2セルに =IF(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2)+1,1)-DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1)>=30,"30("&MID("月火水木金土日",MOD(WEEKDAY(DATE(MID(TRIM(A1),4,2)+1988,MID(TRIM(A1),9,2),1),3)+1,7)+1,1)&")","") 全てコピペします。 これで、A1を修正するだけで全ての曜日と、月に存在しない(2月ならば29~31日)は非表示に 出来ます。 ご参考までに。
お礼
ありがとうございました。 今回は他の方のを使用しましたが、参考にさせていただきます。
- imogasi
- ベストアンサー率27% (4737/17069)
曜日を算出してくれる関数はWEEKDAY関数で、日付シリアル値という1900年来の実際経過日数を指定しないと計算してくれない仕組みなのだ。 ほとんどの日付エクセル関数がこうなっているのだ。 日付シリアル値のことを知らないから、こんな質問になっているが、エクセルでは大切な点だ。 詳しくはGoogleででも照会して。 ーー そして年、月、日が決ると日付が決るのだが、その日付シリアル値はどうして算出してくれるかと言うと、 DATE関数かDATEVALUE関数だ 前者は年、月、日を数字で並べる=DATE(2010,12,23) このほうが判りやすいだろう。 だから年、月、日を別のセルに入れるのが簡単。 2101 12 <-A1,B1 1 木 <-A3とB3 B3の式は =WEEKDAY(DATE($A$1,$B$1,A3)) B3の表示形式をaaaに設定する。これをしてないと曜日コードの数字が出る。 A1の表示形式を0年、B1を0月、A3を0日としておけば良い。 そして A列で連続データを月末まで作成すれば、B列の式を下方向に複写しておくと、B列に曜日が出る。 ーーー 後者は=DATEVALUE("2010年12月23日”) (全角文字ばかりでも出来るようだ) こちらは文字列を結合すれば良いが質問者の頭が混乱しないように省略する。 ーー 月末日で表示止めなどのスキルが必要になるかもしれないが、別途勉強して。
お礼
ありがとうございました。 基本の基はわかっていたのですが、深いところまでわかって良かったです。
- wisemac21
- ベストアンサー率39% (171/429)
カレンダーを作成するのでしょうか? セルの位置関係はどのようになりますか? 年と月はどのように入力されますか?
補足
カレンダーではないんですが、そうですね、カレンダーのような 表示です。 左上あたりに、何年の何月かという表示があり、 その下に日と曜日が1列に横並びにします。
- 未 定(@v4330)
- ベストアンサー率20% (417/2003)
月日に連動して曜日は決まるが、月に連動して日を変えるの意味が判らない。 例えば3月と入力すると・・・・日を変えるとはどう言う事?
補足
2→1(火)、2(水)~28(月) 3→1(火)、2(水)~31(木) という具合です。 わかりますか?
お礼
ありがとうございました。 最高です