• ベストアンサー

エクセルの日付の求め方

いつもお世話になります。 直近の締め日の求め方の質問です。 例えばA1に3/15と入力したらB1に2/20を求めたいのです。 =DATE(YEAR(A1),MONTH(A1)-1,20) としてみたのですが、3/1-3/20までは2/20と求められるのですが、 3/21-3/31に対して3/20と求めたいのに2/20となってしまいます。 IF関数を組み合わせれば良いのかもしれませんが、 わかりません。 宜しくお願いします。

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

  • ベストアンサー
  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

=IF(DAY(A1)>21,DATE(YEAR(A1),MONTH(A1),20),DATE(YEAR(A1),MONTH(A1)-1,20)) でしょうか。

taraco35
質問者

お礼

問題解決です。 急いでいたので本当に助かりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 日付を表示

    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関数で曜日を表示させてます。 おねがいします。

  • 【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など)でも構いません。

  • Excel2007 日付関数について教えて下さい。

    A1に例えば「2012/5/22」と入力すると B2に翌々月10日の日付を入力するため 関数「=DATE(YEAR(A1),MONTH(A1)+2,10)」 と関数を入れました。 A1に日付が入れば翌々月10日の日付を返してくれるのですが A1が空白だと「1900/3/10」の値を返してきます。 日付が入っているとややこしいので消すもしくは日付じゃない値を返すことは出来ないでしょうか よろしくお願いします。

  • Excelの数式について教えてください

    Excelの数式について教えてください カテ違いでしたらすみません Excelの数式にすいて質問です 福祉サービスの利用にかかわる仕事をしています 受給者証の支給開始日や、サービスの利用期間の管理をするため、表にまとめています セルB…サービス種別(機能訓練、生活訓練) セルG…利用開始日 セルM…経過月数 サービス利用期間 機能訓練…18ヶ月まで 生活訓練…24ヶ月まで 注)利用開始が4月1日からの場合、4月を1ヶ月目とする。利用開始が4月2日の場合、翌月5月を1ヶ月目とする これらを踏まえて、回答をいただきたいです Excelにて経過月数を表示させ、現在何ヶ月経過しているか・また、機能訓練18ヶ月、生活訓練24ヶ月を超えた場合、「終了」と表示させるため、セルMにこの様な数式を入力しています =IF(OR(IF(B2="機能訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>18),IF(B2="生活訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>24)),"終了",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))) しかしこの状態では、セルGに利用開始日が入っていない時、セルMには「1328」と表示されてしまいます そのため、 =IF(G2="","",IF(OR(IF(B2="機能訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>18),IF(B2="生活訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>24)),"終了",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")))) というような式を入れましたが、エラーになります 出来たら新規で入力する列には、値が出ないようにしたいので、空欄にしておきたいのです どこが間違っているのでしょうか? アドバイスいただけるとうれしいです。宜しくお願いします

  • 情報を入力すると反映されるシート【説明画像あり】

    図1の、【入力シート】の黄色セルに、任意の情報を入力すると ⇒【反映シート】図2のように情報が反映されます。 しかし、【反映シート】を図3のように、列幅を変更したフォーマットにすると 図2のように反映されません 図3の列幅にしても、反映されるようにするには、どのように関数を変更すれば良いでしょうか?? ご存知の方、いらっしゃいましたら、宜しくお願いします。 【関数説明】 ★図2のA10セルに下記の関数が入っています。  同関数を、A10から、右に、L10までオートフィルドラック。  さらに、下に、L14まで、オートフィルドラックします。 =IF(MOD(COLUMN(A1),4)=1,IF(INT(COLUMN(A1)/4)*5+ROW(A1)>入力シート!$B$35,"",INT(COLUMN(A1)/4)*5+ROW(A1)),IF(AND(MOD(COLUMN(A1),4)=2,OFFSET(A10,0,-1)<>""),TEXT(DATE(YEAR(入力シート!$B$39&"1日"),MONTH(入力シート!$B$39&"1日")+INT((COLUMN(A1)-1)/4)*5+ROW(A1)-1,1),"e"),IF(AND(MOD(COLUMN(A1),4)=3,OFFSET(A10,0,-1)<>""),MONTH(DATE(YEAR(入力シート!$B$39&"1日"),MONTH(入力シート!$B$39&"1日")+INT((COLUMN(A1)-2)/4)*5+ROW(A1)-1,1)),IF(AND(MOD(COLUMN(A1),4)=0,OFFSET(A10,0,-1)<>""),入力シート!$B$38+IF(OFFSET(A10,0,-1)=入力シート!$B$36,入力シート!$B$37,IF(OFFSET(A10,0,-1)=入力シート!$C$36,入力シート!$C$37,0)),"")))) ★★★上記関数は、教えてgoo回答者様にご教授いただきました★★★ ★B40には下記の関数が入っています。 =DATE(YEAR(B39&"1日"),MONTH(B39&"1日")+B35-1,25) ※図1と図2は、同じブック内にある、別のシートです。

  • 日付データからの取り込み

    セルA1に日付が入力されています。  2008/01/05 セルB1に 0801 という年月の4桁のみ表示させたいのですがうまくいきません。B1に関数でYEAR(A1)&MONTH(A1)とさせてみましたが20081となってしまいます。書式設定等で解決できないのでしょうか。または他の関数で出来ますでしょうか。お知恵をお貸しください。   

  • ファイルメーカーのスクリプトで25日締めの請求データを作成していますが・・・

    毎度お世話になります。 ファイルメーカーVer4.0 OS=Win2000です。 毎月25日で締めて請求書を起こすために、締め日の翌日(26日)から締め日までのデータを検索して表示するスクリプトを作成しております。 「計算結果を貼り付け」で現在の日付から、表示させる締め日を貼り付けて、検索させようとしております。 見づらくて申し訳ございませんが、本日の日付を拾ったあと、下記の計算をさせようとしていますが、「関数のカンマの数が多すぎます」とエラーが出て困っています。 if(Month ( 本日 )=1, if(Day ( 本日 ) < 26, Year ( 本日 )-1 & "/" & Month ( 本日 )-2 &"/" & 26 & "..." & Year( 本日 )-1 & "/" & Month ( 本日 )-1 &"/" &25, Year ( 本日 )-1 & "/" & Month ( 本日 )-1 &"/" & 26 & "..." & Year( 本日 ) & "/" & Month ( 本日 ) &"/" &25, if(Month ( 本日 )=2, if(Day ( 本日 ) < 26, Year ( 本日 )-1 & "/" & Month ( 本日 )-2 & "/" & 26 & "..." & Year ( 本日 ) & "/" & Month ( 本日 )-1 & "/" & 25, Year ( 本日 ) & "/" & Month ( 本日 )-1 & "/" & 26 & "..." & Year ( 本日 ) & "/" & Month ( 本日 ) & "/" & 25, if(Day ( 本日 ) < 26, Year ( 本日 ) & "/" & Month ( 本日 )-2 & "/" & 26 & "..." & Year ( 本日 ) & "/" & Month ( 本日 )-1 & "/" & 25, Year ( 本日 ) & "/" & Month ( 本日 )-1 & "/" & 26 & "..." & Year ( 本日 ) & "/" & Month ( 本日 ) & "/" & 25))))) ※(本日)とはフィールド名で、スクリプトの最初に「現在の日付を貼り付ける」を入れてありますので、スクリプト起動時に当日の日付が入力されます。 要は、当日が25日までであれば、1月は前年の11月26~12月25日を表示し、 2月は前年の12月26~翌年の1月25日を表示し、3月から12月までは、当日が25日までは、前々月の26日~前月の25日迄を表示し、26日~末日までは前月の26日~当月の25日を表示させて、それを作業日のフィールドに貼り付けて検索すれば、直近の25日締めで表示されると考えました。 どこが違うのでしょうか?

  • 日付計算について

    エクセルの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種類のバージョンで利用しております。 どうかよろしくお願い申し上げます。

  • 行の時の日付表示の仕方

    いつもお世話になります。 WindowsXP Excell2003です。 列での日付の表示で 月ごとに変わる 31、30、28、29日の日付を下記の式で対応をしています。 B1 2010 C1 1 A1 =DATE(B1,C1,1) 2010/1/1 A2 =IF(MONTH(A$1+ROW(A1)-1)=MONTH(A$1),A$1+ROW(A1)-1,"") 01 A3 =IF(MONTH(A$1+ROW(A2)-1)=MONTH(A$1),A$1+ROW(A2)-1,"") 02 ・ ・ ご教示をいただきたいのは 行で A2~ 日付を表示するときの数式です。 B1 2010 C1 1 A1 =DATE(B1,C1,1) 2010/1/1 A2 ~ よろしく御願いします。

  • 日付の比較について

    最近PHPの勉強を始めた初心者です。 はじめて質問させていただきます。 2005-1-1から2020-12-31の間で入力した日付の曜日を表示するプログラムを作成しています。 2005-1-1から2020-12-31の間以外ならエラー表示するようにしたいのですが、 入力した日付との比較がうまくいかず、思うように動きません。 どのように直せばいいのかを教えていただけないでしょうか?よろしくお願いします。 <?php $year=$_POST["year"]; $month=$_POST["month"]; $day=$_POST["day"]; $date_str="$year-$month-$day"; $date_time=strtotime($date_str); $firstdate_str="2005-1-1"; $firstdate_time=strtotime($firstdate_str); $lastdate_str="2020-12-31"; $lastdate_time=strtotime($lastdate_str); if ($date_time < $firstdate_time || $date_time> $lastdate_time)  {  echo "Please enter a date between 1/1/2005 and 12/31/2020.";  } else  {  $finddate=date('l', mktime(0,0,0,$month, $day, $year));  echo "The day entered in on $finddate";  } ?>

    • 締切済み
    • PHP