8/03/2022

Excel。分類ごとに連番を簡単に設定するにはどうしたらいいの【Classification】

Excel。分類ごとに連番を簡単に設定するにはどうしたらいいの

<TEXT+COUNTIF関数>

連番を設定したい時には、オートフィルの連続データをつかうことで、簡単に連番を振ることができます。


ただ、次のように、分類別の連番を設定するには、どのようにしたら、簡単に設定することができるのでしょうか?


やりたいことは、B列の地域コードを頭文字としたD列の新コードを作りたいわけです。


新コードは、地域コードごとに連番を設定しています。


地域コードごとにオートフィルターなどで抽出して、オートフィルターをつかい作成するという方法も悪くありませんが、地域コードのような抽出したい件数が多い場合は、単純作業の繰り返しが発生し、面倒な処理になってしまいます。


まして、Excel VBAでプログラム文をつくるような内容でもありません。


考え方として、「地域コードの中で、その地域コードは何回目の登場なのか」を算出することができれば、あとは、頭文字を表示させればいいわけです。


このような場合、登場するのが「COUNTIF関数」です。


まずは、COUNTIF関数をつかって、何回目の登場かを算出します。


E2に設定した数式は、

=COUNTIF($B$2:B2,B2)


最初の引数を、「$B$2:B2」と、始点を絶対参照にします。


終点を相対参照にすることで、オートフィルで数式をコピーすると、自動的に範囲選択を拡張することができます。

累計を算出する方法を応用した形ですね。


こうすることで、そこまでの範囲で、検索条件の「地域コード」が何回登場したのかを算出することができます。


あとは、文字結合の「&(アンパサンド)」とTEXT関数を組み合わせれば、完成ですね。


今回は、説明のためにE列に一度算出した値をしようしていますが、次のように数式をD2に設定することで、複数に分けず、一発で算出することもできます。


=B2&"-"&TEXT(COUNTIF($B$2:B2,B2),"000")


可読性も悪くないので、TEXT関数とCOUNTIF関数のネストで算出するほうが、よりいいかもしれませんね。