7/24/2017

Excel。日付別で連番を振りたいけど何かいい方法ないの?【Serial number】

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埋め)連番を作ることが出来ました。

機会があれば是非作ってみませんか?