Excel。日付別で連番を振りたいけど何かいい方法ないの?
<SUBSTITUTE&TEXT関数+COUNTIF関数>
次のような表がありまして、この表のB列に
営業日+日付ごとの通し番号(連番)を設定したいということなのですが、
厄介なのは、希望している形。
例えば、営業日が4月1日で、
その日の中の最初の行(レコード)ならば、
2017040101
という形に連番を設定してほしいというわけです。
完成形はこのような表にしたい。
4月2日の最初は、2017040201となっていますよね。
このような【項目別連番】を設定する方法をご紹介していきます。
このような場合、日付と連番を分けて考えていきましょう。
営業日を20170401とする方法を考えていきましょう。
このようなケースの場合、どうしても、
YEAR関数やMONTH関数やDAY関数を使いたくなりますが、
これだと、月と日のところで0(ゼロ)埋めをするのに、
プラスのことをしなければなりません。
要するに、YEAR関数とMONTH関数とDAY関数をそれぞれ、
&で結合するだけではダメということになります。
そこで、結合で考えるのではなくて、
2017/04/01という形式のうち、
”/”(スラッシュ)を無くせば
20170401と表示することが出来ることに
着目してアプローチしていきます。
“/”を無くす、
つまり、”/”を””(空白)で
置き換えてあげることが出来ればいいということで、
SUBSTITUTE関数を使って置き換えてみましょう。
では、B2をクリックして、
SUBSTITUTE関数ダイアログボックスを表示しましょう。
文字列には、
TEXT(C2,"yyyy/mm/dd")
C列は、月日の表示形式なので、これを”/”を使った表示形式に変更します。
そのためにTEXT関数を使って表示形式を変えております。
検索文字列は、”/”
この”/”を探すわけですね。
置換文字列は、””
“/”を無くすわけですね。
では、OKボタンをクリックしてみましょう。
まずは、日付を0埋めで表示することが出来ました。
そして後半の項目別の連番を作る作業に取り掛かりましょう。
項目別に変わるということので、
パターンを考えてみると、C列の期間の中で、
C2のセルの内容と同じものがいくつあるのか?ということで、
件数を求めることが出来そうですね。
どうしても、連番ということで、
ROW関数などに引っ張られそうになりますが、
「数える」ということでも、連番を振ることが出来ます。
数えるということから、
登場する関数は、COUNTIF関数を使ってみましょう。
先程の数式のあとに&を入力して、
COUNTIF関数ダイアログボックスを表示させていきます。
範囲ですが、
$C$2:C2
これは、累計を求める時に使う方法でお馴染みの、
スタート地点を固定しておいて、範囲を伸ばしていく方法ですね。
検索条件は、C2
そして、OKボタンをクリックします。
数式は、
=SUBSTITUTE(TEXT(C2,"yyyy/mm/dd"),"/","")&COUNTIF($C$2:C2,C2)
となっていますが、
これでは、項目別連番の0埋めが出来ていませんので、
ここでもTEXT関数を追加して修正してあげます。
完成した数式は、
=SUBSTITUTE(TEXT(C2,"yyyy/mm/dd"),"/","")&TEXT(COUNTIF($C$2:C2,C2),"00")
では、オートフィルで数式をコピーしてみましょう。
これで完成しました。
このような方法を使うことで、
日付(0埋め)+項目別(0埋め)連番を作ることが出来ました。
機会があれば是非作ってみませんか?