• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel 日付が週末の場合、金曜日を返す(補足))

Excel日付週末場合金曜日返す

このQ&Aのポイント
  • Excelで日付が週末の場合、金曜日を返す方法について解説します。
  • セルに入力されている日付に対して、特定の条件を満たす場合には金曜日の日付を返す式を作成する方法をご紹介します。
  • また、特定の日数が選択された場合には、条件式を適用して金曜日の日付を返す方法についても説明します。

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

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

>・セルI6が 1/11 だとして、セルF6は 10日 が選択された場合、 >セルK6には 1/19 が自動的に  それでしたら、次の様な関数にされると良いと思います。 =IF(ISNUMBER(1/DAY(I6)/DAY(I6+F6-2)),I6+F6-2-AND(F6>=11,F6<16)*((WEEKDAY(I6+F6-2,2)>5)+(WEEKDAY(I6+F6-2,2)>6)),"")

その他の回答 (5)

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

>上記の(2)の動きを11日~15日を選択した場合にのみ適用させたいのです。  申し訳御座いません、御質問の内容を「11日~15日を選択した場合にも適用」と勘違いしておりました。  只、御補足頂いた内容だけではまだ判らない点が御座います。  11日~15日を選択した場合には、(2)の動きのままで良いとして、11日~15日以外を選択した場合には、どの様な動作とすれば宜しいのでしょうか?  単に、何も表示させないだけで宜しいのでしょうか?  それとも何か別の内容を表示させるのでしょうか?  例えば、11日~15日以外を選択した場合に、 「訪問Siteでは11日~15日を選択して下さい」 と表示させるものとした場合には、次の様な関数となります。 =IF(ISNUMBER(1/DAY(I6)/DAY(I6+F6-2)),IF(OR(F6<11,F6>15),"訪問Siteでは11日~15日を選択して下さい",I6+F6-2-(WEEKDAY(I6+F6-2,2)>5)-(WEEKDAY(I6+F6-2,2)>6)),"")

territory
質問者

補足

ご丁寧にありがとうございます。 はい◎言葉足らずでした! 申し訳ないです。 --8日~10日を選択した場合は、F6で選択された日数を足した後、-2日 の結果を表示する処理-- ・セルI6が 1/11 だとして、セルF6は 10日 が選択された場合、 セルK6には 1/19 が自動的に

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

>最後にもう1つ、「10日」と選択されているセルはプルダルン式のセルで10日~15日を選択出来るようになっていてこの式を「10日」以外が選択された場合に適用されるようにしたいのです。  その前に確認しなければならない事があります。  回答No.2を読まれて、試して見られたのでしょうか?

territory
質問者

お礼

度々のご回答、ありがとうございます。 - - - - - - - - - - - - - - - - - - - (1)プルダウンで選択した日数(8日~15日)を加え、更にそこから-2日引いた日付を自動表示) (2)ただし、計算後の曜日が土曜、もしくは日曜日の場合は前の金曜日の日付を返す - - - - - - - - - - - - - - - - - - - いずれも条件は結果としてクリアしているのですが、 上記の(2)の動きを11日~15日を選択した場合にのみ適用させたいのです。 可能でしょうか・・?

territory
質問者

補足

答No.2の内容でも試してみました! - - - - - - - - - - - - - - - - - - - (1)プルダウンで選択した日数(8日~15日)を加え、更にそこから-2日引いた日付を自動表示) (2)ただし、計算後の曜日が土曜、もしくは日曜日の場合は前の金曜日の日付を返す - - - - - - - - - - - - - - - - - - - いずれも条件は結果としてクリアしているのですが、 上記の(2)の動きを11日~15日を選択した場合にのみ適用させたいのです。 **なるべく理解してもらい易いように、Excelには以下の内容で配置してあります。** ~お得意様ルート営業 予定表~ C6:顧客名 D6:担当者名 E6:住所 F6:訪問Site(8~15日) G6:前回メモ1 H6:前回メモ2 I6:訪問予定日(1) J6: [済/未] K6:訪問予定日(2) L6: [済/未] M6:訪問予定日(3) N6: [済/未] O6:訪問予定日(4) P6: [済/未] Q6:訪問予定日(5) R6: [済/未]

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

>上記の式を入れてみたところ、プルダウンから10日を選びセルI6で1/11を選択した結果の表示が >1/19と表示させたいのですが、1/18になってしまいます。 >なぜでしょうか?  2013年の1/19は土曜日なのですから、 >更にこの結果の値を >「土曜、もしくは日曜日の場合は前の金曜日の日付を返す」 という条件通りに、その直前の金曜日の日である1/18が表示されただけですが、何が問題なのでしょうか?

territory
質問者

お礼

「10日」と選択されているセルはプルダルン式のセルで10日~15日を選択出来るようになっていて この式を「10日」以外が選択された場合に適用されるようにしたいのです。

territory
質問者

補足

最後にもう1つ、「10日」と選択されているセルはプルダルン式のセルで10日~15日を選択出来るようになっていて この式を「10日」以外が選択された場合に適用されるようにしたいのです。

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

質問:No.7880479 Excel2007、週末の場合は前の金曜日を返す?   http://okwave.jp/qa/q7880479.html の方ですね。  補足文を確認した時には既に御質問が締め切られてしまっていたため、放置していたのですが、そのままの式で、 >この式を「10日」以外が選択された場合に適用 出来る筈です。 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ★★ ですから、まずは、その関数としたままで、他の日数の場合も試してみて下さい。 ★★ ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★  それとも、若しかしますと、F6セルに入力されているのは、「10」~「15」という数値ではなく、「10日」~「15日」という文字列データになっているのでしょうか?  もし、「10日」~「15日」という文字列データになっているのでしたら、「10」~「15」という数値が入力される様に、F6セルのドロップダウンリストを変更される事を御勧め致します。  もしもその際に、F6セルの表示を、どうしても「10日」~「15日」の形式で表示したいという場合には、F6セルの書式設定の表示形式を[ユーザー定義の] 0"日" とされると良いと思います。  或いは、あまり良い事では御座いませんが、もしも、何らかの理由があって、F6セルに入力するデータ(←表示される内容ではなく、データそのものの事です)を、「10」~「15」という数値データではなく、「10日」~「15日」という文字列データとしたい場合には、K6セルに入力する関数を次の様なものに修正されると良いと思います。 =IF(ISNUMBER(1/DAY(I6)/DAY(I6+SUBSTITUTE(F6,"日",)-2)),I6+SUBSTITUTE(F6,"日",)-2-(WEEKDAY(I6+SUBSTITUTE(F6,"日",)-2,2)>5)-(WEEKDAY(I6+SUBSTITUTE(F6,"日",)-2,2)>6),"")

territory
質問者

お礼

ありがとうございます。 う~ん・・やはり難しいのでしょうか?

territory
質問者

補足

見つけてくれてありがとうございます。 前回、そして今回もお世話になっています! =IF(ISNUMBER(1/DAY(I6)/DAY(I6+SUBSTITUTE(F6,"日",)-2)),I6+SUBSTITUTE(F6,"日",)-2-(WEEKDAY(I6+SUBSTITUTE(F6,"日",)-2,2)>5)-(WEEKDAY(I6+SUBSTITUTE(F6,"日",)-2,2)>6),"") >>上記の式を入れてみたところ、プルダウンから10日を選びセルI6で1/11を選択した結果の表示が 1/19と表示させたいのですが、1/18になってしまいます。 なぜでしょうか?

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

分かり易い式はK6セルには次の式を入力すればよいでしょう。 =IF(COUNT(F6,I6)<>2,"",IF(WEEKDAY(I6+F6-2,2)=7,I6+F6-4,IF(WEEKDAY(I6+F6-2,2)=6,I6+F6-3,I6+F6-2)))