『指定期間の週数を月ごとに出す方法』(がちゃぴ) 初めての質問です。 A1セルに日付 B1セルに週数 を記載しています。 A1の日付からB1の週数後を最終日として 指定月の週数を算出したいです。 ※A1:2021/10/29  B1:2  の場合、10/29〜11/10が該当期間 週数の起算日はA1セルの日付です。 ↓イメージ  A      B C D 1 日付     週数 2 3 11月の週数  12月の週数  1月の週数  2月の週数 できれば関数でできるようにしたいのですが、可能でしょうか。 よろしくお願いします。 < 使用 Excel:Excel2016、使用 OS:Windows10 > ---- 何を基準にして、11/10になるんですかね? 2週だったら、今年のカレンダーでみると11/11か11/12になると思いますけど。 (疑心) 2021/11/29(月) 19:10 ---- コメントありがとうございます。 記載ミスです。 正しくは、10/29〜11/11です。 よろしくお願いいたします。 (がちゃぴ) 2021/12/01(水) 09:51 ---- =TEXT(A1,"m/d")&"〜"&TEXT(A1+B1*7-1,"m/d") こういうのですか? (きまぐれおじさん) 2021/12/01(水) 09:57 ---- */きまぐれおじさんさん コメントありがとうございます。 すみません、ちょっと違います… 週数は、何週間かをだしたいです。 例えば今回の場合で説明すると、 10/29〜11/11の期間の1日目が各月に何週分あるかをカウントしたいので、 ★10/29★ 10/30 10/31 11/1 11/2 11/3 11/4 ★11/5★  11/6 11/7 11/8 11/9 11/10 11/11 10月は★で挟まれた日をカウントすることになるので「1」 11月も★で挟まれた日をカウントすることになるので「1」 としたいです。 他の例ですと、 日付11/4 週数6 の場合、期間が11/4〜12/15となるので ★11/4★ 11/5 11/6 11/7 11/8 11/9 11/10 ★11/11★ 11/12 11/13 11/14 11/15 11/16 11/17 ★11/18★ 11/19 11/20 11/21 11/22 11/23 11/24 ★11/25★ 11/26 11/27 11/28 11/29 11/30 12/1 ★12/2★ 12/3 12/4 12/5 12/6 12/7 12/8 ★12/9★ 12/10 12/11 12/12 12/13 12/14 12/15 となり、 11月は「4」 12月は「2」 としたいです。 よろしくお願いいたします。 (がちゃぴ) 2021/12/01(水) 10:14 ---- =MAX(0,NETWORKDAYS.INTL(MAX($A$1,EOMONTH($A$1,COLUMN(A1)-2)+1),MIN($A$1+$B$1*7-1,EOMONTH($A$1,COLUMN(A1)-1)),CHOOSE(WEEKDAY($A$1),"1111110","0111111","1011111","1101111","1110111","1111011","1111101"))) 基準日の曜日が期間内に何回あるかを数えれば良い、ということならこんな感じでしょうか。 (きまぐれおじさん) 2021/12/01(水) 10:50 ---- きまぐれおじさんさん ありがとうございます。 関数が理解できなかったので、実際に試してみました。 「A1の日付の曜日を基準日として、A1の月にA1の日付以降何回その曜日があるか表示される」 という関数であっていますか? (がちゃぴ) 2021/12/01(水) 11:02 ---- きまぐれおじさんさん、 >CHOOSE(WEEKDAY($A$1),"1111110","0111111","1011111","1101111","1110111","1111011","1111101") 部分は SUBSTITUTE("1111111",1,0,WEEKDAY($A$1,2)) ともできる。 (ねむねむ) 2021/12/01(水) 11:07 ---- あと、もし 「A1の日付の曜日を基準日として、A1の月にA1の日付以降何回その曜日があるか表示される」 これであっているのであれば、 初月以降の週数の出し方も教えて頂けると助かります… A1が11月29日で週数が2週だった場合、 11月が「1」 だということはわかるのですが、 12月が「1」と出すためには、どうすればよいでしょうか… 何度もすみません。 (がちゃぴ) 2021/12/01(水) 11:11 ---- ねむねむさん、アドバイスありがとうございます。こちらの方が簡潔で良いですね。 がちゃぴさん、 「A1の日付の曜日を基準日として、A1の月にA1の日付以降何回その曜日があるか表示される」 ↓ 「A1の日付の曜日を基準日として、〔列番号-1〕ヶ月後にA1の日付以降B1週間以内に何回その曜日があるか表示される」 です。 そのため、上記関数をB列以降にコピーすると A列:A1の当月 B列:A1の翌月 C列:A1の翌々月 ・ ・ ・ というようになります。 なお、ねむねむさんの式が簡潔で良いので =MAX(0,NETWORKDAYS.INTL(MAX($A$1,EOMONTH($A$1,COLUMN(A1)-2)+1),MIN($A$1+$B$1*7-1,EOMONTH($A$1,COLUMN(A1)-1)),SUBSTITUTE("1111111",1,0,WEEKDAY($A1,2)))) をお使いください。 A3セルに貼り付け後、右にフィルコピーしてください。 (きまぐれおじさん) 2021/12/01(水) 13:22 ---- こんなのでワークしないですかね? A3セル =SUMPRODUCT(N(EOMONTH($A2+7*(ROW($A1:INDEX($A:$A,$B2))-1),0)=EOMONTH($A2,COLUMN()-1))) 右にコピー <結果図> 行 ___A___ __B__ _C_ 1 日付 週数 2 11月4日 6 3 4 2 0 (半平太) 2021/12/01(水) 14:43 ---- 皆様ありがとうございます。 きまぐれおじさんさん 解説ありがとうございます。 理解できました。 週数を表示する1月目が、A1の日付に左右されると思うのですが、 どんな日付でも、11月、12月、1月、2月のように固定された月の週数がわかるようにすることは できますでしょうか? (がちゃぴ) 2021/12/01(水) 16:07 ---- 日付のセルから月だけ参照して1月ずつプラスして横にずらせば表示できるのでは 12か月分用意しておけばスタート月は日付のセルの日付で変わるが12か月分表示は出来るのでは (なるへそ) 2021/12/01(水) 16:31 ---- 半平太さんがさらに凄い関数を用意してくれたので借用させてもらうと =SUMPRODUCT(N(EOMONTH($A1+7*(ROW($A1:INDEX($A:$A,$B1))-1),0)=EOMONTH(DATE(年,月,1),0))) 年と月のところは任意の年と月に変更してください。 (きまぐれおじさん) 2021/12/01(水) 16:32 ---- 皆様ありがとうございます。 無事にやりたい操作を実現することができました。 とても感謝しています。 本当にありがとうございました。 (がちゃぴ) 2021/12/01(水) 16:41