Excelで第一〇曜日を求める方法がわかりません

このQ&Aのポイント
  • Excelファイルで次月作業日程(何月何日何曜日)を載せるための数式がわかりません。
  • 現在は手入力でカレンダーを確認しながら日程を入力していますが、自動表示したいです。
  • 調査した結果、特定の日を求めるために=DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+1の数式が使えることが分かりましたが、第一週の始まりが日曜日に限定されているようです。
回答を見る
  • ベストアンサー

Excelで第一〇曜日を求める方法がわかりません

初めて質問させていただきます。 Excelファイルで毎月お客様に送付状を作成しており、その送付状内に次月作業日程(何月何日何曜日)を載せて送付しております。 弊社は基本的に第1水曜日など曜日で定期日程を組んでいるお客様が多い状態です。 現在カレンダーと睨めっこしながら手入力しておりますが、自動表示したいです。 色々調べた結果 =DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+1 の数式を使うとできるようなのですが、この数式だと第一週の始まりが日曜日に限定されている?ようです。 例えば、今月2012年10月の送付状を作る時、来月の日程が第一土曜日の場合。 =DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+6 ※B2には2012/10/8と記入されている。 と入力すると、11月10日と第二土曜日が入力されてしまいます。 この部分を11月3日と表記されるように数式を入力したいのです。 何かいい方法はありませんでしょうか? 分かりにくい文章ですいません。宜しくお願いします。

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.11

質問の式を使うのはやめます。 これ、全部一般的にうまくいくように関数で表現するのは、面倒です。たとえば、5週目の曜日はうまく出ない。これを避けるのはできないこともないが、関数でやるのは生産的ではないでしょう。 で、第4週分、28曜日(4週目土曜日)までを出すことにして、それ以上は、保証しないとすれば、次式ではどうでしょう。 =IF(WEEKDAY(EOMONTH(B2,0)+1)>IF(MOD($C$1,7)=0,7,MOD($C$1,7)),EOMONTH(B2,0)+1-WEEKDAY(EOMONTH(B2,0)+1)+7+$C$1,EOMONTH(B2,0)+1-WEEKDAY(EOMONTH(B2,0)+1)+$C$1) $C$1に曜日の数値を入れます。どこでも適当に決めるか、直接曜日を表す数値を入れても構わないが、4つありますね。 第1週  1~7 第2週  8~14 第3週 15~21 第4週 22~28 第5週 29~ やめといたほうがいい

yura20060403
質問者

お礼

okormazdさん ありがとうございました! こんなに短時間で解決できるとは。。。 皆さんのおかげです! 分かり易い回答ありがとうございました。 また何かありましたら、どうぞよろしくお願いいたします。

その他の回答 (10)

  • jk7343tfg
  • ベストアンサー率16% (2/12)
回答No.10

他の回答を読まずに回答してすみませんでした。 第n曜日は  =DATE(YEAR(B2),MONTH(B2)+1,8+(n-1)*7-WEEKDAY((YEAR(B2),MONTH(B2),A))) 但しAは  日曜日の時  7  月曜日の時  6  火曜日の時  5  水曜日の時  4  木曜日の時  3  金曜日の時  2  土曜日の時  1

yura20060403
質問者

お礼

jk7343tfgさん ありがとうございます。 こんなにたくさんの方々に回答いただけると思いませんでした。 皆さん詳しいですね。羨ましい。 こちらの回答でもやりたい事ができました。 ありがとうございました!

  • jk7343tfg
  • ベストアンサー率16% (2/12)
回答No.9

来月の日程が第一土曜日の場合 =DATE(YEAR(B2),MONTH(B2)+1,8-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1)))

  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.8

#3です。 曜日の指定をフレキシブルに行うため、B3に曜日の番号を入力しておくものとします。例:日曜="1" =DATE(YEAR(B2),MONTH(B2)+1,1) +IF(WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1)<=B3, B3-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1),B3+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1))

yura20060403
質問者

お礼

何度もありがとうございました! こちらでも出来ました。 ベストアンサーは二つ付けられないのですね。。。 同じくらいベストアンサーなのですが。。。 minosenninさんまた何かありましたら宜しくお願い致します!

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

B2セルに 2012/10/8 と入力されている場合において、2012/10/8は2012年10月の第2月曜日ですから、翌月の第2月曜日である2012/11/12を求める関数は次の様なものとなります。 =IF(ISNUMBER(1/DAY(B2)),DATE(YEAR(B2),MONTH(B2)+1,1)+MOD(WEEKDAY(B2,3)-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),3),7)+INT((DAY(B2)-1)/7)*7,"")  尚、この関数では、B2セルに第5○曜日の日付を入力した場合で、且つ、翌月に5週目のその曜日の日が存在しない場合には、翌々月の第1○曜日が表示される事になります。  また、例えば、2012年10月の第2月曜日を求める際に、 B1セルに「2012」といった西暦年数、 C1セルに「10」といった月を表す数、 D1セルに「2」といった第何番目の曜日かを表す数、 E1セルに「月」といった曜日 を入力するとしますと、目的の日付を求める関数は次の様なものとなります。 =IF(ISNUMBER((B1&"/"&C1&"/"&FIND(E1,"月火水木金土日"))+0),DATE(B1,C1,1)+MOD(FIND(E1,"月火水木金土日")-1-WEEKDAY(DATE(B1,C1,1),3),7)+(D1*7-7),"")  尚、上記の関数で、第5○曜日を求めようとした際に、その月には第5○曜日が無い場合には、翌月の第1○曜日が表示される事になります。

yura20060403
質問者

お礼

ありがとうございます。 こちらもすごい関数ですね。上手く利用できれば一番便利かもです。。。 ただ現状B2のセルには前月の作業日程日は入れていません。 送付状を送るお客様ごとの締日が入力されているため、その日付から年・月を読み取って来月の日程を自動で表示させたいです。 ただ、この関数も上手く使えるように検討してみます。 ありがとうございました。

  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.6

#3です。第一水曜日の表示はこんな感じでいかがでしょうか。 =DATE(YEAR(B2),MONTH(B2)+1,1) +IF(WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1)<=4, 4-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1),11-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1))

yura20060403
質問者

お礼

素晴らしいい! ありがとうございます! 凄い知識ですね。。。 第一水曜日と第一土曜日の関数の違いの法則がわからないため、他の曜日の出し方が分かりません。。。 他の曜日はどのように出せば良いですか? お忙しい中大変恐縮ですが、宜しくお願いします。

  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.5

#3です。 曜日の形式を日曜始まりに変更すれば、もっと簡単になります。 =DATE(YEAR(B2),MONTH(B2)+1,1) +7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1)

yura20060403
質問者

お礼

minosenninさん ありがとうございます! 第一土曜日は出来ました! ただ、第一水曜日などに応用するため、 =DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1)+4で試した所 B2のセルに2011/10/1と入れてみた所、11月9日の第2水曜日が表示されてしまいました。 種類を変えればいいのかと思い以下の式を入れてみましたが、=DATE(YEAR(B2),MONTH(B2)+1,1) +7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),13)+1 B2のセルに2011/05/01と入れた所2011年06月08日と表示されてしまいました。 何かうまい方法はございますでしょうか。 何度もすいません宜しくお願いします。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

#1です。 たびたびすみません。B列にどのようなデータがあるのかわからないので。 土曜日でしたね。たぶん、 =DATE(YEAR(B2),MONTH(B2)+1,1)-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1)+7 ですかね。

yura20060403
質問者

お礼

okormazdさん 何度も返答ありがとうございます! 試した所出来ました。 ただ、これを第一月曜日などに応用する場合は =DATE(YEAR(B2),MONTH(B2)+1,1)-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1)+2ですかね。 試した所、前の月の末日が出てしまう場合があります。 どのような式を入れればいいですか? たびたびすいません。

  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.3

式を、1日が土曜日以前の場合と日曜日に分けて対応すればよいようです。 =DATE(YEAR(B2),MONTH(B2)+1,1) +IF(WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)<7, 6-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2),6)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

#1です。 ごめんなさい。 確認したら、ちょっとまずいところがあります。修正しなければだめですね。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

ほかの式もあるが質問の式を使いたいなら、 +7で第2をとっている。 第1を欲しかったら+0、第3なら+14という具合だから、 =DATE(YEAR(B2),MONTH(B2)+1,1)-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+6 でどうだ?

関連するQ&A

  • 指定した曜日の日にち

    指定した月の2週目の木曜日を出したいのです。 そこで =DATE(YEAR(C1),MONTH(C1),0)-WEEKDAY(DATE(YEAR(C1),MONTH(C1),0)-3,3)+2*7 このような式を書いたのですが、 これだと 第二木曜日が出ますが、 求めたいのは、2週目の木曜日の日付なのです。 C1に 日付を入力します。   求める月が替わっても 2週目木曜日がしりたいのですが、 よろしくお願いします。

  • 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日とする数式をご教授ください。

  • エクセルで曜日を表示させるには

    左から右に1(曜日)2(曜日)と表示させるのに ="1("&WEEKDAY(DATE(年月日!A1,年月日!A2,年月日!A3))&")" の式が入っています。 WEEKDAYのところをMONTHにしたら月を表示するのですがWEEKDAYにしたら数値しか帰ってきません。書式設定でaaaとしてもだめです。 よろしくお願いします。

  • 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")))) というような式を入れましたが、エラーになります 出来たら新規で入力する列には、値が出ないようにしたいので、空欄にしておきたいのです どこが間違っているのでしょうか? アドバイスいただけるとうれしいです。宜しくお願いします

  • エクセルでカレンダー

    下記の物を回答から調べて試してみたのですが、例えば 2008年 9月(他の月でもいいのですが)、日にちが1日ずれてしまいます 2008年9月1日は(月)なのに日曜日になってしまいます 何処か間違っているのでしょうか?    A   B   C   D   E   F   G 1  2006  9 2  日  月  火  水  木  金  土 3               1   2   3 4   4   5   6   7  8   9   10 5  11  12  13  14  15  16  17 6  18  19  20  21  22  23  24 7  25  26  27  28  29  30 ◆A1に「西暦年」、B1に「月」を入力します A3の式 A3=IF(MONTH(DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1),2)+7*(ROW(A1)-1)+COLUMN(A1))=$B$1,DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1),2)+7*(ROW(A1)-1)+COLUMN(A1),"") ★右と下にコピー

  • 毎月第二金曜日(Part2)…

    今日の午前中も質問させていただいたんですが、その後また行き詰ってしまって…すみませんが教えてください。 入力条件は、a1に"=TODAY()"、これだけです。これでa2に今月の第二金曜日、a3に来月の第二金曜日、a4に再来月の第二金曜日、もし、今日が第二金曜日か、過ぎていたら、a2に来月の第二金曜日、a3に再来月の第二金曜日、a4に再来月の次の第二金曜日の3つの数字を出したいんです。 今月の第二金曜日というのはa2に"=DATE(YEAR(A1),MONTH(A1),15-WEEKDAY(DATE(YEAR(A1),MONTH(A1),2)))"でクリアできました。しかし、今日が第二金曜日を過ぎてた場合と、年をまたいだところで頭の中がワヤになっちゃいました。 ひとつのセルで入れられる数式で教えてください。お願いします。

  • エクセルの関数

    =COUNTIFS(A10:A47,"一日有休",B10:B47,">=" & DATE(YEAR(E11)-1,MONTH(E11),DAY(E11)),B10:B47,"<" & E11) 上記の数式をJ11に入力してますが動きません。 (A10:A47)には一日有休などの文字が(B10:B47)には有給取得日が E11には有給付与日が2010/10/1等 結果が0になります。 どこが、がいけないのでしょうか

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

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

  • Excelで曜日を出力する方法

    セルA1に3/19と入力すると、3月19日と表示されますよね。 で、セルA1に日付を入力したら、 B1に「日曜日」と表示させる方法がありましたら、教えてください。 Weekday関数を使うと、数字で曜日が、表示されるところまではわかるんですが。 この数字で表示されたものを、「日曜日」といったように、 日本語で表示することは無理でしょうか? IF関数と組み合わせようとしたら、やっぱり、また、1900年におめにかかってしまって(-_-;) ユーザー定義でaaaaで、日曜日と表示させるのも知っているんですが、 式を組み合わせるとむちゃくちゃになってしまって。 よろしくお願いいたします。

  • エクセルの検索関数について教えてください。

    損益計算書(社内版)で、(1)ファイルで、過去3年間の計算書を、(2)ファイルで最新月を一番右にし、過去1年分を見れるものを作成しています。 月次の成績は、ファイル(1)に手入力してゆきます。 社内資料として使用するファイル(2)は、自動で入力できるよう関数でリンクを張りたいと考えています。 ファイル(2)の月の入力は、表紙から引っ張り、月次で変更をかけてゆきます。 それ以前の月は =MIN(DATE(YEAR(AB3), MONTH(AB3)-1, DAY(AB3)),DATE(YEAR(AB3), MONTH(AB3)+1-1,0)) でさかのぼっています。 (1)ファイルに新に入力した数値を、(2)ファイルに反映させる方法を教えてください。 たとえば、ファイル(2)AB4に入る数式です。 宜しくお願いいたします。