- ベストアンサー
エクセル 日付の参照の方法
エクセルで、スケジュール表を作っています。 セルA4の行から1月1日~となっていきます。 日付の部分が、セルの表示では「1月1日」と出ているのですが fxの欄には「=A1」と出ます。 以下、「1月2日」→「=A4+1」、「1月3日」→「=A5+1」・・・です。 ちなみにA1には「2008年」と表示されますが、ここもfxの欄は「2008/1/1」となっており、 ここの年数を変えると自動で1年分の日付・曜日が変わるようになっています。 ここまで他の人が作ったので、どうやってこういう設定にしたのか分かりません・・・。 この状態で、祝日に該当する日だけ、その祝日名が出るような列を作りたいんですが、 IF関数で日付を参照しようにも、「IF(A4="1月1日","元旦","")」にしても 「IF(A4="=A1","元旦","")」にしても、うまく「元旦」と出ません。 (エラーにはならないんですが・・・。) こういう、セルとfx欄で出力される文字が違うようなセルを参照するには、どうしたらよいですか? 教えて下さい。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
日付の参照の方法については解決されているようなので、一言アドバイスを 回答の中に 「祝日表を作成」 と書いている人がいますが、 意味がないです。 なぜならば、祝日は年によって日付が違うからです。 たとえばハッピーマンデーや国民の祝日がそれに該当します。 敬老の日:2009/9/21 国民の祝日:2009/9/22 秋分の日:2009/9/23 と作成しても 2010年には祝日表を修正しないといけませんよね。 毎年変わる祝日にも対応できるような祝日表は マクロでも使わない限り無理でしょう。 であれば、 毎年祝日表をメンテナンスすればよい・・・ とお考えであれば、 祝日を表示する部分(列)をダイレクトで修正すればいいだけですよ。別にVLOOKUPとか使って祝日表から引っ張ってくる必要などないですから。 祝祭日の数は年によって違いますし、 祝祭日表の行挿入、削除の手間もありますから。 その点も考慮し、 自動表示にするのか、手入力するのか 検討してみてください。
その他の回答 (5)
- gyouda1114
- ベストアンサー率37% (499/1320)
下のURLが参考になりますよ。 祝日については、【特徴2】の【祝日を表示編】 をクリックすると祝日の表示の方法がでます。 エクセルでカレンダー【Excel活用術】 http://kokoro.kir.jp/know/calendar1.html なお、Excelでは、日付はシリアル値で管理され、セルの表示形式により1月1日と表示されているだけです。 したがって、「IF(A4="1月1日","元旦","")」又は「IF(A4="=A1","元旦","")」でも元旦と表示されないのです。 また、数式としては誤りではないため、エラーとはなりません 説明しきれませんんので次のURLで勉強をしてください 日付と時刻に関する知識 http://www3.tokai.or.jp/excel/kansu/hiduke.htm
お礼
シリアル値について理解できました。 どうもありがとうございました! 祝日に関してですが、そのURLに載っている方法だと 毎年の祝日を自分であらかじめ表として作っておかなければなりませんよね。 そうではなくて、年数さえ変えれば50年先や100年先の日付・曜日・祝日まで分かるような状態にしたいので、 祝日も関数で出るようにしたいです。 それはまた今回の質問とは別件なので、勉強してみます。 分からなかったら、またここで質問するかも^^;
- dkljdkfsj
- ベストアンサー率23% (13/56)
A4には"1月1日"が入っているわけではないので、 思うように表示されないのでしょう。 実はA4には「39448」というシリアル値が入っていて、 書式設定 m"月"d"日" によって "1月1日" と表示されているに過ぎません。 ですので、IF文を使うにも シリアル値で比較するか =IF(A4=DATEVALUE("2008/1/1"),"元日","") とします(1/1は「元旦」ではなく「元日」です) しかし、この数式では、 元日以外の祝祭日が表示されませんので、 祝祭日すべてを表示させるには 別の方法を検討しないといけないと思います。 この質問は「日付の参照の方法」なので、 祝日を表示する質問は、タイトルを変えて改めて質問したほうが、 目的の回答を得られると思います。 祝日判定は厄介ですので http://www.h3.dion.ne.jp/~sakatsu/holiday_topic.htm を参考にしてみてください
お礼
祝日の参考URL、ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
>セルとfx欄で出力される文字が違うようなセルを参照するには、どうしたらよいですか? ⇒文字列に統一する案は如何でしょうか。 (1)休日表を作成。仮にsheet2のA列に'1月1日(先頭にアポストロフィ付加)、B列に休日名称 (2)=IF(COUNTIF(sheet2!A:A,TEXT(A4,"m月d日")),VLOOKUP(TEXT(A4,"m月d日"),sheet2!A:B,2,FALSE),"")として下方向にコピー
お礼
回答、ありがとうございます。 年数を変えると自動で日付と共に祝祭日もその年のものに変わるように 作りたいので、そこは別途、関数で何とかしようと思います。
- DIooggooID
- ベストアンサー率27% (1730/6405)
Excel では、日付(時刻)の情報はシリアル値(1900年1月1日を基準に1、1900年1月2日を2と定めている。2008年1月1日は、39448です。)で処理しているので、比較する場合もシリアル値で行う必要があります。 このような場合、欄外にスケジュール表と同じ書式で 「1月1日」「元旦」(X1セルとY1セル)のような、祝祭日の一覧表を作成します。 この一覧表の日付とスケジュール表の日付とを比較するような作りにすれば、シリアル値を意識する必要はなくなりますよ。
お礼
回答、ありがとうございます。 別枠で祝祭日の一覧表を作成する方法でも良いのですが、 年数を変えると自動で日付と共に祝祭日もその年のものに変わるように 作りたいので、そこは別途、関数で何とかしようと思います。
おそらくA4以降は書式が日付になっていると思います。人間からは日付に見えますが、実際は日付のシリアル値です。数式を次のようにして試してください。 =IF(A4=DATE(YEAR($A$1),1,1),"正月","")
お礼
=IF(A4=DATE(YEAR($A$1),1,1),"正月","") これでできました。 「,1,1」の数字の部分が日付に対応しているのでしょうか。 ともかく、ありがとうございました!
お礼
回答ありがとうございます。 マクロでも使わない限り無理ですか・・・。 きちんとエクセルの勉強をしたことがない自分には 難しいみたいですね・・・。 とりあえず自動表示にチャレンジしてみて、 頭パンクしたら手入力にしようと思います;;。 ありがとうございました。