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

解決済みの質問

得意先の締日により該当月を変更するには

得意先により25日締め、27日締め、月末締めがあります。25日締めはA社のみ、27日締めはB社、C社の2社、後は全部月末締めです。

会社コードがA社で注文日付の日付数字が25以下なら当月、25以上なら翌月、27日締めの2社も同様にコードから27以下なら当月、27以上なら翌月、それ以外はすべて当月とする関数文が作れればと考えています。

そこでAR1からAV1まで上記条件を満たすために必要と思われる、注文日付、会社コード、日数、当月、翌月を求める関数をいれてみました。

A社コード:10090 B社コード:10097 C社コード:10098
AR1に注文日付が入ります。(例: 2018/12/23)  AS1に会社のコードが入ります。AT1には=DAY(AR1)の関数が入り日付の数字が入ります。
AU1には該当月を求める関数=MONTH(AR1)、AV1には翌月を求める関数=EDATE(AR1,1)が入ります。 その結果を求める関数をAW1当たりに入れたいと考えています。

あくまでも締日による該当月が求められれば良いので、もっとセルを使っても問題ありません。

もしこれが無理であれば、日付マスタ(シート名)を使う事は可能でしょうか。日付マスタはA列のA2からA150まで得意先名、K列のK2からK150まで該当締月が自動で入る関数が入っています。途中E列には会社コードが入っています。

月末締めは=EOMONTH(TODAY(),0)、25日締めは=EOMONTH(TODAY(),-1)+25が入っています。27日締めは同様に=EOMONTH(TODAY(),-1)+27が入っています。

このマスタにうまく締日による該当月の数字列を加えることはできないでしょうか。

投稿日時 - 2018-07-04 22:13:24

QNo.9515228

困ってます

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

もっとセルを使っていいのなら、BA1 ~BB3 にテーブルを作ります
1009025
1009727
1009827

AU1 に月が入っているので利用します。
AW1 に
=AU1+(DAY(AR1)>IFERROR(VLOOKUP(AS1,BA1:BB3,2,FALSE),31))
但しこれだと会社コートが10090 で 12/26以降は13になります。
締月の1日を得るには、
=DATE(YEAR(AR1),AU1+(DAY(AR1)>IFERROR(VLOOKUP(AS1,BA1:BB3,2,FALSE),31)),1)
です。
=MONTH(DATE(YEAR(AR1),AU1+(DAY(AR1)>IFERROR(VLOOKUP(AS1,BA1:BB3,2,FALSE),31)),1))
とすれば、正しい月が取り出せます。

後半部分は「締日による該当月の数字列」というのが何なのか判りませんでした。

投稿日時 - 2018-07-04 23:38:52

お礼

ご回答いただきありがとうございます。 
まさに思う通りの動作が出来ました。「締日による該当月の数字列」の意味は得意先ごとに、注文日から該当する月の数字が入るようにしたいと言う事をでした。わかりにくい説明ですみませんでした。

自分でも日付マスタで以下のようにしてみました。
25日締めの会社コードがR列のR25にある事を例にとると、
R列のR25に得意先コード
S列のS25に注文日
U列のU25に=DAY(S25)
V列のV25に=MONTH(S25)
W列のW25に=IF(MONTH(S25)+1=13,1,MONTH(S25)+1)
X列のX25に=IF(U25>25,W25,V25)

かなり長くなりましたが、これで締日による月を取り出すことが出来ました。 ありがとうござます。m(_ _)m

投稿日時 - 2018-07-05 08:43:56

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

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

回答(1)