• ベストアンサー

月末を動的に表示、非表示にする

エクセルで、年、月を入力するとその月の日付が動的に表示されるものを作っています。 月末の問題で、31日の日もあれば30日の日もあるため、 DATE(YEAR(年),MONTH(月)+1,1)-1で月末を求め、IF文で制御しようと、 IF((DATE(YEAR(年),MONTH(月)+1,1)-1)=31,"31","")という式を入れているのですが、 30日の月も、31日の月も日が表示がされません。 どこに問題があるのでしょうか。かなり切羽詰っています。 エクセルの関数は苦手のため、 お詳しい方がいらっしゃいましたらご回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • saburo0
  • ベストアンサー率35% (76/216)
回答No.6

#5の方式で使用されるなら、曜日は下記の形式となります。 ・29日の曜日を表示するセルの式 =IF(DAY(DATE($A$1,$B$1,29))=29,TEXT(DATE($A$1,$B$1,29),"aaa"),"") ・30日の曜日を表示するセルの式 =IF(DAY(DATE($A$1,$B$1,30))=30,TEXT(DATE($A$1,$B$1,30),"aaa"),"") ・31日の曜日を表示するセルの式 =IF(DAY(DATE($A$1,$B$1,31))=31,TEXT(DATE($A$1,$B$1,31),"aaa"),"") 本当は実際のExcelデータがあればもっと簡潔に書けるのかもしれませんが、イメージが正確に伝わらないと回答も正確に出来ないので、このような回答にさせて頂きます。

lickdog99
質問者

お礼

saburo0さん、本当にありがとうございます。 何とか解決できそうです。 これでやっと終われそうです。 saburo0には本当にお世話になりました! ありがとうございました!!

その他の回答 (6)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.7

saburo0さん横から失礼します もっと勉強してください =IF((DATE(YEAR(年),MONTH(月)+1,1)-1)=31,"31","") =TEXT(A5,"aaa") はご自分で考えたのですか? ご自分で考えたのであれば、saburo0さんの回答された =IF(DAY(DATE($A$1,$B$1,29))=29,"29","") の意味や修正部分も分かると思うのですが・・・・・ =TEXT(A5,"aaa")は隣のセルだと思うので =IF(DAY(DATE($A$1,$B$1,29))=29,DATE($A$1,$B$1,29),"") でよいと思います

lickdog99
質問者

お礼

回答ありがとうございます >もっと勉強してください かなり切羽詰っていて、自分でも色々調べてはいたのですが、 不愉快な気分にさせてしまって申し訳ありません。 最初は周りの人に聞いていたのですが、もういなくなってしまって。。。 とりあえず解決はできそうです。ありがとうございました。

  • saburo0
  • ベストアンサー率35% (76/216)
回答No.5

#1です。 A1セルに「2008」などの年、B1セルに「2」などの月が数値で入っているものとします。 ・29日を表示するセルの式 =IF(DAY(DATE($A$1,$B$1,29))=29,"29","") ・30日を表示するセルの式 =IF(DAY(DATE($A$1,$B$1,30))=30,"30","") ・31日を表示するセルの式 =IF(DAY(DATE($A$1,$B$1,31))=31,"31","") これではいかがでしょうか。

lickdog99
質問者

お礼

度々回答してくださりありがとうございます! おかげさまで、日付(数字)の表示はうまく行ったのですが、 その横のセルに、曜日がTEXT(A3,"aaa")のように入っており、 日付だけでは今度は曜日がおかしくなってしまいました。。。。 それでもとても参考になりました。 saburo0さん、本当にありがとうございます。 もし、分かったら曜日の表示のアドバイスもいただけたら幸いです。 saburo0さんには本当に感謝しています。

lickdog99
質問者

補足

因みに、シートの構成としては、A5にDATE(年,月,1)と入力し、その後は、 A5+1とオートフィルで入力をしています。 日付の横にはTEXT(A5,"aaa")のようにして、曜日の月、火、水などを表示しています。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

>かなり切羽詰っています。 お困りのことはよくわかりますが、どんなシート構成かわからないので、一般的なヒントしか回答しかできません。 サンプルになりますがA1に年(2008など)、A2に月(2など)を入力して、適当なセルに以下の式を入力して下方向にコピーしてください =IF(DATE($A$1,$A$2,ROW(Z1))<=DATE($A$1,$A$2+1,0),DATE($A$1,$A$2,ROW(Z1)),"") 月末日より後ろは空白になりますよ

lickdog99
質問者

お礼

回答していただきありがとうございます。 シート構成としては、15行まで行った後、右側に16行表示する構成となっています 1 |16 2 |17 ・ |・ ・ |・ 15 |30 |31 1列に収まってないので難しい部分もあります。 でもとても参考になりました! ありがとうございます!

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>動的に表示されるものを・・・ の意味がわかりません。こんな質問で「動的」と表現した質問を見たことが無い。かっこ良いが、意味のはっきりしない用語を質問には 使わないこと。 どの月でも、同じ1-31行の(指定月の)出るに日付を表示するとき、月末を越えた行は空白にしたいということですか。 小の月には、31行目に式は入れるが、空白を表示したいとか言う意味か。 それなら ーー 例データ A1 2008 B1 6 A3 に=DATE($A$1,$B$1,ROW()-2) 28日まで式を複写 29日該当の A31に =IF(DATE($A$1,$B$1,ROW()-2)>EOMONTH(DATE($A$1,$B$1,1),0),"",DATE($A$1,$B$1,ROW()-2)) と入れる。 A33まで式を複写 結果 2008 6 2008/6/1 2008/6/2 2008/6/3 ・・・ 2008/6/28 2008/6/29 2008/6/30 EOMONTHはアドイン関数なので(わからなければWEB照会すること) 注意のこと。質問に出ている月末を求める式で置き換えても可。 ーーー 質問の意味を誤解していたら、上記回答は無視してください。

lickdog99
質問者

お礼

回答ありがとうございます。 動的にというのは31行の項目に、31日ある月は31日まで数字を埋めて、 30日の月は30行目まで数字を埋め、残りの1行を空白にし、 29日の月は29行目までを数字で埋め、残りの2行を空白にしたいという意味でした。説明不足ですいませんでした。

  • kuma56
  • ベストアンサー率31% (1423/4528)
回答No.2

式 DATE(YEAR(年),MONTH(月)+1,1)-1 は、シリアル値で算出するから、セルの表示形式がどうなっているのか分からないけど、値としては 39691 の様に5桁の数値になっているはずです。 それを 式 IF((DATE(YEAR(年),MONTH(月)+1,1)-1)=31,"31","") と入れても、5桁なので2桁である 31 とは認識されないと思いますよ。 だから、"30日の月も、31日の月も日が表示がされません。"になっているのではありませんか? たとえば、 IF((DATE(YEAR(年),MONTH(月)+1,1)-1)=(DATE(YEAR(年),MONTH(月),31))=,"31","") こんな式なら何とかなりませんか??

lickdog99
質問者

お礼

回答していただきありがとうございます。 試しにやってみましたがうまくできませんでした。。。 でもとても参考になりました!!!! ありがとうございました!!!

  • saburo0
  • ベストアンサー率35% (76/216)
回答No.1

このような式になるのではないのでしょうか? =IF(DAY(DATE(2008,7,1)-1)=31,"31","") → 空白 =IF(DAY(DATE(2008,8,1)-1)=31,"31","") → 「31」

lickdog99
質問者

お礼

回答していただきありがとうございます。 今月の月末が31日あるのか30日あるのかを判定して(又は月のように29日あるのか)、31行あるセルに日付を入力したいと思っています。 31日ある月は31行目まで、30日ある月は31行目を空白に、29日の月は 30、31行目を空白にしたいのです。 IF(DAY(DATE(2008,7,1)-1)=31,"31","") の月の7は1を引かなくてもいいのでしょうか。 やってみましたが、1月ずれてしまっています。また、1月や2月の表示がうまくいきませんでした。。。 でもとても参考になりました!! ありがとうございます!!!

関連するQ&A

  • エクセルで月末を求める計算式

    エクセルで月末を求める計算式 下記の式ですが、月末の日付が正常に表示されません。 どこか間違いがありましたらご指導お願い致します。 =IF(B3="","",DAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0)))

  • 日付を表示

    H3に日付を入力してます。 B6にこの関数を入力してます。 =IF(DATE(YEAR($H$3),MONTH($H$3),1)*DATE(YEAR($H$3),MONTH($H$3),-5+ROW()),DATE(YEAR($H$3),MONTH($H$3),-5+ROW()),"") これをB6~↓にコピペしてます。 なんだか違う気もしますが、無事に表示されてます。 やりたい事は、月によって日数が変わるとき例えば 29日や31日など この時現在は空いたセルによく月の1日や2日が表示されるのを空白にしたいのです。 後上記の関数以外の用方法がありますか! ちなみにC列には、WEEKDAY関数で曜日を表示させてます。 おねがいします。

  • Excel2007 毎月の第1月曜日を表示したい。

    Excel2007です。 毎月の第1月曜日を表示するため、調べたところ =DATE(YEAR(B2),MONTH(B2),1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2),1),2)+1の式を見つけました。 ほとんどの月は、うまく表示されるのですが第1月曜日が1日の時がうまく表示されません。 すなわち、 B2に2009 B2に6 として とし2009年6月の第1月曜日を表示させようとすると、2009/6/8と表示され2009/6/1と表示されません。 IF関数等でで第1月曜日が8日のときは、1日とする数式をご教授ください。

  • 【Excel2000】土・日曜日を考慮した日付+α

    現在セルB1には『A1に入力した日の月末日付+月末休日の場合は前日』が出るようにしてあります。 セルA1 = 日付 セルB1 = IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0))=1,(DATE(YEAR(A1),MONTH(A1)+1,0))-2,IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0))=7,(DATE(YEAR(A1),MONTH(A1)+1,0))-1,DATE(YEAR(A1),MONTH(A1)+1,0))) ここに『A1が25日以降の場合は翌月20日+翌月20日が休日の場合は後日』という設定を加えたいのですが、可能でしょうか?  ・A1 = 2011/07/10 → (結果) B1 = 2011/07/29(金)  ・A1 = 2011/07/25 → (結果) B1 = 2011/08/22(月) どうしても不可能であれば別セル(C1など)でも構いません。

  • Access97で月末と照合して入力できますか?

    使用ソフトはAccess97です。 例えばアクセスのテーブルに フィールド1に今月の末日を入力します。(年と月を入れれば自動で末日が記されれば、なお有り難いです) フィールド2にある日の日付を入力します。 フィールド3にある日の日付が月末になってなければ数値1を、月末を越えて来月になっていれば0が自動入力される フィールド3のこのような関数はありますか?エクセルではIF関数を用いればできることなのですが、アクセスではわからないのです。 どなたかお詳しい方、よろしくお願いします。

  • 明日の日にちを表示するときは

    下記のように1日後の日付を常に表示するときは どこを変えればいいのでしょうか? <TD>※明日は<script language="JavaScript"> <!-- // 訪問日表示 now = new Date(); year = now.getYear(); if (year < 2000) year = year + 1900; month = now.getMonth()+1; day = now.getDate(); wk = new Array("日","月","火","水","木","金","土"); document.write("有効期限:"+year+"年"+month+"月"+day+"日"); // --> </script>

  • ファイルメーカーPRO 5を使ってます 日付を入力してDayNameJ

    ファイルメーカーPRO 5を使ってます。日付を入力してDayNameJ(日付)で曜日を表示させてます。 所が、日付を変更しても曜日が変わりませんどうしたら変更出来ますか? 後、毎月15日を堺に支払月を変更したいと思って関数を使って計算式を入れているのですが計算が出来ません。 If(Day(日付) <= 15,Date(Year(日付),Month(日付),15),Date(Year(日付),Month(日付)+1,15))と入れてます。 たとえば、日付に2009/06/17と入力すると 支払月が0182/05/07となってしまいます。 どうしてでしょうか? 日付、支払月は日付フィールドになってます。 もう一つすみません。 日付を年、月、日のそれぞれのフィールドに分割したくてそれぞれに  年、Year(日付) 月、month(日付) 日、day(日付)と計算式をいれたのですが、日付フィールドにして、日付書式のカスタムでそれぞれ年、月、日を表示するようにしたら 年、0006 月、01 日、17になっていまいます。日付フィールドをやめて数字フィールドにすると年、2009 月、06 日、17とちゃんと出てきます。 日付フィールドではダメって事でしょうか? 計算式をいれている所は日付をかえても計算し直してくれません。どうしたら良いのでしょうか? いろんな質問をしてすみませんが宜しくお願いします。

  • 日付計算について

    エクセルのEOMONTH関数についてお尋ねします。 例えば、請求日によって締切日を変更する(月が変わる)、 =IF(DAY(A1)>=16,EOMONTH(A1,1),EOMONTH(A1,0)) という数式は、一番ベーシックなものであるかと存じます。 考え方はこれとまったく同じなのですが、求める日付が当月末&翌月末ではないのです。 3ヶ月後の10日&4ヶ月後の10日になるようにしたいのです。 EOMONTH()←この()内で求める値を変化させればよいのでしょうか? だとすれば、どのような形にすれば良いでしょうか? また、EOMONTH関数ではダメということであれば、どのようにすれば求められるのでしょうか。 =DATE(YEAR(S1),MONTH(S1)+1,10) をつかってみたり、色々調べてEOMONTHに辿りついたのですが、 3ヶ月後&4ヶ月後、おまけに月末以外の日付(締日の関係上)という2点で 行き詰ってしまいました。 Excelは2003と2007の2種類のバージョンで利用しております。 どうかよろしくお願い申し上げます。

  • エクセルで1年後の月末を表示させたい。

    既出を確認しましたが、いまひとつピンと来るものがなくてお尋ねいたします。 エクセルで表を作成しております。 例えばH2のセルに入力した任意の日付(例えば平成18年10月24日)に対してJ2セルに1年後の月末の日付(例えば平成19年10月31日)を表示させたいのです。 よろしくお願いいたします。

  • Excel VBAで「date」関数を使いたい

    VBAを使用して年月日を入力してます。 セルに表示だけなら Year & "/" & Month… とかでもいいんですが、その日付で計算を行いたいんです。 何日足す、とか。。 それでExcelで使える Date(Year,Month,Day) を思い出したんですが、VBAではエラーになってしまいました。 Application.WorksheetFunction.Date(Year, Month, Day) や Application.Date(Year, Month, Day) もダメでした。 どのようにしたら入力した日付で計算が行えるでしょうか?

専門家に質問してみよう