• ベストアンサー

IF関数とWEEKDAY関数について

よろしくお願いします。 Excelで日付を入力する際、関数で行おうと思ったのですが、複数の条件の場合どうすればいいでしょうか? 例、A1のセルに12月と入っていた場合、A2にA1のセルの1ヶ月先(この場合は1月)の27日が土曜日の場合は、2日後を、日曜日の場合は、1日後を表示させる場合はどうすればいいでしょうか?

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

>例えば次月の27日が土日以外であれば27日、土曜日であれば2日後の月曜日にあたる日にち(29日)、日曜日であれば1日後の28日の表示といったように計算式を作成したいです。  それでしたら、回答:No.2の >●A1セルに入力した日付の翌月の27日が土曜日の場合は、翌月の27日の2日後を、日曜日の場合は、翌月の27日の1日後を表示させる場合。 =IF(ISNUMBER(1/DAY(A1)),DATE(YEAR(A1),MONTH(A1)+1,27)+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,27),2)>5)+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,27))=7),"") の関数をA2セルに入力して下さい。  その上で、A2セルの書式設定の表示形式を[日付]の 2001/3/14 か或いは 2001年3月14日 として下さい。  尚、A1セルに日付ではなく例えば、 2012年12月 等と入力した場合でも、日付を入力した場合と同様に、2013年1月28日(月曜日)の日付が表示されます。

その他の回答 (6)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

  回答:No.1、2、6です。  A2セルに入力する関数に関してですが、 =IF(ISNUMBER(1/DAY(A1)),DATE(YEAR(A1),MONTH(A1)+1,LOOKUP(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,27),2),{1,6,7;27,29,28})),"") という関数にするという方法もあります。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんにちは! >A1のセルの1ヶ月先(この場合は1月)の27日が土曜日の場合は、 >2日後を、日曜日の場合は、1日後を表示させる場合 とありますが、それ以外の場合は普通に翌月の27日を表示すればよい訳ですかね? 一応追ういうコトだとして・・・ A1セルは単に「12」という数値だけを入力し セルの表示形式はユーザー定義から 0月 とするとして A2セルに =WORKDAY(DATE(2012,A1+1,27)-1,1) という数式ではどうでしょうか? ※ 上記数式は今年限定(あと2週間程度)ですので、 来月からは数式内の 「2012」の部分を「2013」に変更します。 外していたらごめんなさいね。m(_ _)m

回答No.4

例えば、年の基準を2012として、 B1: =DATE(2012,$A1+1,27) C1: =IF(WEEKDAY($B1,2)=7,$B1+1,IF(WEEKDAY($B1,2)=6,$B1+2,$B1)) 次は、祝日の場合?、、、もう分から~ん、、、

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1セルへどのような形でデータを入力しているかによってA2セルへ入力する式も変わってきます。 また、1ヶ月後の27日の曜日といっても年によって違いますのでそれも考慮する必要が有ります。 仮にA1セルに12月と月を入れた形で、あるいは単に12とだけ入力したとします。それが今年(2012年)の12月とします。その場合にはA2セルに入力する式は次のようになります。 =IF(WEEKDAY(DATE(2012,SUBSTITUTE(A1,"月","")*1+1,27))=7,DATE(2012,SUBSTITUTE(A1,"月","")*1+1,27+2),IF(WEEKDAY(DATE(2012,SUBSTITUTE(A1,"月","")*1+1,27))=1,DATE(2012,SUBSTITUTE(A1,"月","")*1+1,27+1),"")) 複雑な式になっています。なお、27日が土曜日や日曜日以外では空白の表示になるようにしています。 A2セルには41302といったシリアル値で表示されますのでセルの表示形式を日付に変更します。 仮にA1セルに12月を入力する際に2012/12のように入力したとします。その場合にはパソコンは自動的に2012/12/1の日付として捉えています。 その場合には入力した年もはっきりしていますのでできればそのような入力が望ましいことになります。 その場合のA2への入力の式は次のようになります。 =IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,27))=7,DATE(YEAR(A1),MONTH(A1)+1,27+2),IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,27))=1,DATE(YEAR(A1),MONTH(A1)+1,27+1),""))

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

●A1セルに入力した日付の翌月の27日が土曜日の場合は、A1セルに入力した日付の2日後を、日曜日の場合は、A1セルに入力した日付の1日後を表示させる場合。 =IF(ISNUMBER(1/DAY(A1)),A1+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,27),2)>5)+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,27))=7),"") ●A1セルに入力した日付の翌月の27日が土曜日の場合は、翌月の27日の2日後を、日曜日の場合は、翌月の27日の1日後を表示させる場合。 =IF(ISNUMBER(1/DAY(A1)),DATE(YEAR(A1),MONTH(A1)+1,27)+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,27),2)>5)+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,27))=7),"") ●A1セルに入力した日付から1ヶ月以上経過した後の最初の27日の日が土曜日の場合は、A1セルに入力した日付の2日後を、日曜日の場合は、A1セルに入力した日付の1日後を表示させる場合。 =IF(ISNUMBER(1/DAY(A1)),A1+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1+(DAY(A1)>27),27),2)>5)+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1+(DAY(A1)>27),27))=7),"") ●A1セルに入力した日付から1ヶ月以上経過した後の最初の27日の日が土曜日の場合は、A1セルに入力した日付から1ヶ月以上経過した後の最初の27日の日の2日後を、日曜日の場合は、A1セルに入力した日付から1ヶ月以上経過した後の最初の27日の日の1日後を表示させる場合。 =IF(ISNUMBER(1/DAY(A1)),DATE(YEAR(A1),MONTH(A1)+1+(DAY(A1)>27),27)+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1+(DAY(A1)>27),27),2)>5)+(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1+(DAY(A1)>27),27))=7),"")

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

>A1のセルの1ヶ月先(この場合は1月)の27日が土曜日の場合は、2日後を、日曜日の場合は、1日後を表示させる  仰る事が不明確なため、何をされたいのかが良く判りません。  質問者様が仰る「1ヶ月先の27日」とは、要するに翌月の27日の事なのでしょうか?  つまり、A1セルに例えば2012/1/31と入力した場合には、質問者様が仰る「1ヶ月先の27日」とは2012/2/27の事になるのでしょうか?  それとも、翌月の27日ではなく、1ヶ月以上経過した後の最初の27日の日の事で、A1セルに例えば2012/1/31と入力した場合には、質問者様が仰る「1ヶ月先の27日」とは2012/3/27の事になるのでしょうか?  又、A1セルに例えば2012/1/27と入力した場合には、質問者様が仰る「1ヶ月先の27日」とは何年の何月何日になるのでしょうか?  又、 >土曜日の場合は、2日後を、日曜日の場合は、1日後を という部分も意味が不明瞭です。  2日後とか1日後とは、一体何の日の2日後や1日後の事なのでしょうか?  A1セルに入力した日付の2日後や1日後の事なのでしょうか?  それとも、「質問者様が仰る1ヶ月先の27日」の日の2日後や1日後の事なのでしょうか?

spitzelt
質問者

補足

ご回答ありがとうございます。 例えば次月の27日が土日以外であれば27日、土曜日であれば2日後の月曜日にあたる日にち(29日)、日曜日であれば1日後の28日の表示といったように計算式を作成したいです。

関連するQ&A