『当月の日にちのみを表示させたい』(ひろひろ) たびたび失礼します。ボックス型カレンダー、おかげさまでできたのですが、 曜日固定のため、先月と翌月の日付も一緒に表示されています。 毎月20以降に翌月の日付に更新できるようにしているのですが、 この時、翌月の日付だけを表示することはでいますか? もうひとつ、これも以前、お伺いしたのですが、日付をいれると曜日を自動で表示、 できるようにおかげさまでなったのですが、 日付をいれていない曜日のセルが「土」と表示されてしまいます。 1日に2回出勤された方は午前、午後とわかれて時間を入力するため、 日付と曜日は1回しか入力せず、その下のセルは両方空白にしたいのですが、 よい方法があれば教えてください。 よろしくおねがいします。 ---- どの様な方法でつくってあるのか分からないので出来ないかもしれませんが >この時、翌月の日付だけを表示することはでいますか? 1.数式で日付を出している場合 IF関数を使って、必要ない部分は""を表示させる。 2.数式を使っていない場合(数式を使っていても出来ますが) 条件付き書式で、必要ない部分は文字色を白にする。 >日付と曜日は1回しか入力せず、その下のセルは両方空白にしたいのですが、 こちらも、必要な行と必要でない行を判断して ""を表示させるなり 条件付き書式で、必要ない部分の文字色を白にすれば良いような気がします。 (HANA) ---- ご返事ありがとうございます。 A1 に、年「2006」 B1 に、月「1」 A2からG2に、日〜土 A3 =IF(MONTH(DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(A1)-1)+COLUMN(A1))=$B$1, DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(A1)-1)+COLUMN(A1),"") でボックス型カレンダーを作成しています。 IF関数を使う場合、どうすればいいでしょうか? 初心者のため、申し訳ありませんが、教えていただけないでしょうか? よろしくお願いします。(ひろひろ) ---- 上の式では、B1の月以外の月は表示しないようになっているようですが? すでにIF関数が使われていて 説明のため式を簡潔にするために 「A3の日付」=計算結果A3に表示される日付 =DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(A1)-1)+COLUMN(A1) に、ご呈示の式を置き換えると A3=IF(MONTH(A3の日付)=$B$1,A3の日付,"")になります。 ~~~~~~~~~~~~~~~~~~~~ ======== ^^ 式の意味は A3の日付の月(MONTH)が、セルB1と(~~~~~の部分) 等しい場合 A3の日付け(====の部分) 等しく無い場合 ""(^^の部分) と言った感じです。 (HANA) ---- ・・・・と言うことで (今までの流れから20日始まりにしたいとして) 上の式では「月」しか条件に含まれていませんが 「月(MONTH)」と「日にち(DAY)」で条件に合えば(~~~~~の部分を変更) その日付、条件に合わなければ "" と言う感じに直せばいいと思います。 ・・・・分かりますかね? ご質問の確認ですが 「ほぼ希望通りのボックス型カレンダーは出来ていて(※) 必要でない部分を表示しないようする方法を知りたい」 と言うことですよね? 上にご呈示の式以外の式で(※)の部分は既につくってあるのですよね? (HANA) ---- たびたびすいません。ほぼ希望通りできています。 20日以降に翌月の日付に自動で更新できるようにしています。 私の関数の貼り付け方が、悪いのか、ボックスすべてに日付が出ている状態です。 今月分でいうと日曜日は1日始まりだからいいとして、31日以降の水曜日からが翌月の日付が11日まででています。 何度もお手間を取らして、本当にすいません。(ひろひろ) ---- 「20日自動更新」と言うだけで、日付はその月の1日から末日までが 表示されれば良いんですかね? 残念ながら、こちらではひろひろさんの陥っている状況を再現出来ません。 >A1 に、年「2006」 >B1 に、月「1」 >A2からG2に、日〜土 この辺りは「入力」されていますか?「表示」されていますか? 関係ないのかもしれませんが、この位しか思いつかないのでとりあえず 関数が入っているならその関数。また、書式設定がしてあるならその 書式設定を教えて下さい。 まずは、ひろひろさんのエクセルの状態と同じ状態(同じ現象)を出すことを試みます。 ひろひろさんの方では、A1,B1,A2からG2に値を入力した場合に どうなるかを確認してみて下さい。 (HANA) ---- A1に=YEAR(IF(DAY(TODAY())>20,TODAY()+20,TODAY())) B1に=MONTH(IF(DAY(TODAY())>20,TODAY()+20,TODAY())) A2からG2に日から土 A3に=IF(MONTH(DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(A1)-1)+COLUMN(A1))=$B$1, DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(A1)-1)+COLUMN(A1),"") B3に=IF(MONTH(DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(B1)-1)+COLUMN(B1))=$B$1, DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(B1)-1)+COLUMN(B1),"") そのまま横にG3までコピーし次の行にいき A4に=IF(MONTH(DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(H1)-1)+COLUMN(H1))=$B$1, DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(H1)-1)+COLUMN(H1),"") このまま横にG4までコピー この調子で6段、日付が入るようになっていて、すべてに日付が表示されている状態です。 (翌月の日付も表示されてしまいます。) 説明できているでしょうか?よろしくお願いします。(ひろひろ) ---- えっと・・・B3とA4の式もご呈示ですが、これらは A3の式をコピーしたものと同じですよね? (・・・と思いましたがどうやら違うようですね。) やっぱり再現できません。 >この調子で6段、日付が入るようになっていて これは、8行目まで数式がコピーされている と言う事でしょうか? (以下そうだとして話を進めます) A11=DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1))+7*(ROW(A1)-1)+COLUMN(A1) として、G16までコピーして下さい。 A19=MONTH(A11)=$B$1 として、G24までコピーして下さい。 A19:G24は全てTRUEと表示されましたかね? また、A1,B1に値を入力した場合もやっぱりダメですか? 参考のため、G8に入っている数式を教えて下さい。 (HANA) 追記しました。 ---- お世話になります。HANAさん、おかげさまで、途中で関数が変わっていたことがわかりました。ありがとうございます。 何度もお手間をかけて、申し訳なく思っています。 本当にありがとうございました。(ひろひろ) ---- それは良かったですね。 シャンシャンシャンで大団円。かと思いきや・・・ もう一つありましたね。 こちらはイメージがわかないのです。 どんなレイアウトで、どんな関数が入っているのか教えて下さい。 単純に IF(通常日付が入っているセル="","",通常日付が入っているセル) でいけるんですかね? (HANA) ---- 返事が遅くなってすいませんでした。 もうひとつの方はA列に日付を入れると、B列に曜日がでるようにしています。 確か、B列に(=A)といれて、表示形式をaaaにしたような・・・・。 こうするとなぜか日にちを入れていない日が「土」と表示されてしまいます。 私の入れ方がまた悪いのでしょうか?よろしくお願いします。(ひろひろ) ---- えっと・・・ >単純に >IF(通常日付が入っているセル="","",通常日付が入っているセル) >でいけるんですかね? こちらは試されましたか? エクセルヘルプより 『日付と日付システムについて』 Excel では、日付を計算するために、日付が一連のシリアル値として格納されます。 既定では、1900 年 1 月 1 日はシリアル値 1 となり、・・・云々・・・ とあります。 そこで、書式設定が標準のセルに =何も入力されていないセル としてみて下さい。 結果は「0」が表示されると思います。 シリアル値1→1900/1/1  曜日は日曜日 なので シリアル値0→1899/12/31 曜日は土曜日 になります。 (シリアル値がマイナスになると本格的に1899年の12月になるので表示されないみたいですね。 シリアル値0は、何とか1900/1/0 1900年の1月みたいです。) なので、IF関数を使って 「何も入力されてなかったら""を表示してよ」と エクセルにお願いして下さい。 (もちろん、指示を出してもらっても良いのですが・・・・。) (HANA) ---- こんばんは、いつもありがとうございます。 貼り付け方は普通に日付のセルに="","",と入れるだけでよいですか? 今貼り付けてみたら入力した数式にエラーを発見しましたとでます。 どうしたらよいでしょうか?教えてください。よろしくお願いします。(ひろひろ) ---- いやいや、曜日が表示されているセルに >IF(通常日付が入っているセル="","",通常日付が入っているセル) です。 たとえば、日付をA1セルに入力。曜日をB1セルに表示なら B1=IF(A1="","",A1) ・・・できますかね? (HANA) ---- 気づきました IF(通常日付が入っているセル【番地】="","",・・・ と書いておけば良かったですね。 今回の場合、B列が0になるとエクセルは 「そうか、1900/1/0の曜日を表示しろ ってわけね。 土曜日だよ」 と貴方の指図を忠実に実行してくれているわけです。 なぜB列が0になるのかと言うと、A列に何も入力されていないからです。 なので、今B列に「A列を参照しなさい(=A列)」としている式を 「もしA列が空欄なら、空欄を表示して そうでなければA列を参照しなさい」 と言う式に変更して下さい。 (HANA) ---- HANAさん、返事が遅くなってすいませんでした。 おかげさまで、できました!本当にありがとうございました(ひろひろ)