こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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日と表記されるように数式を入力したいのです。

何かいい方法はありませんでしょうか?
分かりにくい文章ですいません。宜しくお願いします。

投稿日時 - 2012-10-08 12:06:40

QNo.7738063

困ってます

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

質問の式を使うのはやめます。
これ、全部一般的にうまくいくように関数で表現するのは、面倒です。たとえば、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~ やめといたほうがいい

投稿日時 - 2012-10-08 19:29:39

お礼

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

投稿日時 - 2012-10-08 21:18:11

ANo.11

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(11)

ANo.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

投稿日時 - 2012-10-08 19:27:40

お礼

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

投稿日時 - 2012-10-08 21:16:15

ANo.9

来月の日程が第一土曜日の場合

=DATE(YEAR(B2),MONTH(B2)+1,8-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1)))

投稿日時 - 2012-10-08 19:07:52

ANo.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))

投稿日時 - 2012-10-08 18:03:21

お礼

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

投稿日時 - 2012-10-08 21:14:24

ANo.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○曜日が表示される事になります。

投稿日時 - 2012-10-08 17:09:09

お礼

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

ただ、この関数も上手く使えるように検討してみます。
ありがとうございました。

投稿日時 - 2012-10-08 17:46:51

ANo.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))

投稿日時 - 2012-10-08 16:35:17

お礼

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

投稿日時 - 2012-10-08 17:07:40

ANo.5

#3です。
曜日の形式を日曜始まりに変更すれば、もっと簡単になります。

=DATE(YEAR(B2),MONTH(B2)+1,1)
+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1)

投稿日時 - 2012-10-08 14:16:25

お礼

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日と表示されてしまいました。
何かうまい方法はございますでしょうか。
何度もすいません宜しくお願いします。

投稿日時 - 2012-10-08 15:01:57

ANo.4

#1です。
たびたびすみません。B列にどのようなデータがあるのかわからないので。
土曜日でしたね。たぶん、

=DATE(YEAR(B2),MONTH(B2)+1,1)-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),1)+7

ですかね。

投稿日時 - 2012-10-08 14:05:43

お礼

okormazdさん

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

投稿日時 - 2012-10-08 14:47:43

ANo.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)

投稿日時 - 2012-10-08 13:58:07

ANo.2

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

投稿日時 - 2012-10-08 13:20:47

ANo.1

ほかの式もあるが質問の式を使いたいなら、
+7で第2をとっている。
第1を欲しかったら+0、第3なら+14という具合だから、

=DATE(YEAR(B2),MONTH(B2)+1,1)-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+6

でどうだ?

投稿日時 - 2012-10-08 13:01:10

あなたにオススメの質問