[[20240407231722]] 『納期管理表の作成』(うるん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『納期管理表の作成』(うるん)

納期管理表の作成

みなさまこんばんは。
是非お力を貸して頂きたく投稿してみます。
やりたいことは下記のようなことです。


シート1枚目(手打ち)

	a(社名)	b(注文)	c(納期)
1	a社	24/4/2	24/10/1
2	a社	24/4/1	25/10/1
3	b社	24/4/2	24/10/2
4	c社	24/4/1	24/10/2
5	c社	24/4/2	24/10/1
6	d社	25/4/2	25/10/2


シート2枚目(全自動反映)

	a(社名)	b(注文)	c(納期)
1	a社	24/4/1	24/10/1
2	a社	24/4/2	24/10/2
3	b社	24/4/2	24/10/2
4	c社	24/4/2	24/10/1
…
…
…
11	c社	24/4/1	25/10/3
12	d社	25/4/2	25/10/2


このように並べ替えてくれるようなシートを作成したいです。

並び替えの条件としては
(1) 注文日を早い順に並べ替え
(2) 注文日が同日の場合は社名を若い順に並べ替え
(3) 注文日と社名が同値の場合は納期の早い順に並べ替え
(4) ただし納期が来期(以降)の場合は11行目から並べるとし、別途(1)〜(3)の条件を当てはめる

現在は(1)〜(3)までをフィルタのソート機能で手動で昇順or降順で並べ替え
(4)の納期が来期以降のものについてはd列に
=IF(YEAR(EOMONTH(C1,-3))<=YEAR(EOMONTH(TODAY(),-3)),"1","2")
を書き込んで場合分けし、無理やり行挿入して合わせている状態です。
※ソートはc列→b列→d列の順

毎回情報を書き加えるたびにソートし直さないといけないので
なんとか自動化できないかとあれこれ調べているのですが、うまいこといかず…。
何かよい案がありましたら、是非ご教示頂きたいです。
宜しくお願い致します。

< 使用 Excel:Excel2019、使用 OS:Windows11 >


 シート2は今期と来期以降の2つのテーブルを作ればいいのでは?

 FILTER関数とSORT関数が使えれば関数だけでできると思いますが、
 2019ではSORT関数が使えない野でしたっけ?

 関数でできない場合は、PowerQuery(データの取得と変換)がおすすめです
(´・ω・`) 2024/04/09(火) 14:45:56

(´・ω・`)さま
早速コメント頂きありがとうございます!
?@2つのテーブル…ぱっとイメージが浮かばないため、テーブルの扱いについて調べてみます!
 テーブルさえ分かれていれば、同じシート内でも成り立ちそうでしょうか?
?Asort関数はトライしたことなかったです。rank関数とはまた別のものですよね?
rank関数では社名(文字列)に使用できなかったのですが、sortでも試してみます
?BPowerQuery…初耳ワードなので、こちらも調べてみます!
ありがとうございます!
(うるん) 2024/04/09(火) 16:28:48

 2019はFITLER関数使えないそうです

 他の有識者の回答をお待ちください。
(´・ω・`) 2024/04/09(火) 16:55:02

 ●Sheet1
    A    B    C         D  E 
 1 a社 24/4/2 24/10/2 12404020000241002  1 
 2 a社 24/4/1 25/10/1 22404010000251001 11 
 3 b社 24/4/2 24/10/2 12404020003241002  2 
 4 c社 24/4/1 25/10/3 22404010004251003 12 
 5 c社 24/4/2 24/10/1 12404020004241001  3 
 6 d社 25/4/2 25/10/2 22504020006251002 13 
 7 a社 24/4/5 24/10/2 12404050000241002  4 

 D1
=IF(A1="","",IF(YEAR(EOMONTH(C1,-3))<=YEAR(EOMONTH(TODAY(),-3)),1,2)&
TEXT(B1,"yymmdd")&TEXT(COUNTIF(A$1:A$100,"<"&A1),"0000")&TEXT(C1,"yymmdd"))
下方向・↓
 E1
=IF(D1="","",COUNT(INDEX(0/(D$1:D$100<D1)/(LEFT(D$1:D$100)=LEFT(D1)),))+1
+(LEFT(D1)="2")*MAX(10,COUNT(INDEX(0/(LEFT(D$1:D$100)="1"),))+1))
下方向・↓

 ●Sheet2

    A    B    C 
 1 a社 24/4/2 24/10/2 
 2 b社 24/4/2 24/10/2 
 3 c社 24/4/2 24/10/1 
 4 a社 24/4/5 24/10/2 
 5            
 6            
 7            
 8            
 9            
10            
11 a社 24/4/1 25/10/1 
12 c社 24/4/1 25/10/3 
13 d社 25/4/2 25/10/2 

 A1
=IFERROR(INDEX(Sheet1!A:A,MATCH(ROW(A1),Sheet1!$E:$E,0)),"")
右方向・→下方向・↓
(んなっと) 2024/04/09(火) 17:51:01

んなっとさま
早速コメント頂きありがとうございます!
すみません、あまり重要でないと判断し記載していなかったのですが、実際には品名などの項目も存在しており、注文日も納期も社名も完全に一致する行が存在しています。そのためd列に重複する値がいくつか出てしまい、e列でも同じ数字が発生してしまいました。
countifとかを追加して同値を回避できるのかなと考えたのですが、スマートなやり方が思い浮かばず…。
何卒、ご教示の程よろしくお願いします。
(うるん) 2024/04/11(木) 16:04:38

 E1
=IF(D1="","",COUNT(INDEX(0/(D$1:D$100<D1)/(LEFT(D$1:D$100)=LEFT(D1)),))+COUNTIF(D$1:D1,D1)
+(LEFT(D1)="2")*MAX(10,COUNT(INDEX(0/(LEFT(D$1:D$100)="1"),))+1))

(んなっと) 2024/04/11(木) 16:39:28


んなっとさま
またまた早速コメント頂きありがとうございます!
しっかりきれいに整列できました…感動です!
まだちゃんと内容を理解できていないので、じっくりと解読させて頂きます。
またよろしくお願いします!
(うるん) 2024/04/11(木) 17:16:19

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.