給与計算で便利なEXCEL TIPS集「郵便番号を適切な形式に直したい!その2」
今日は昨日に引き続き、「給与計算で便利なEXCEL TIPS集」の第6回目をお届けします。今回は「給与計算ソフトでエクスポートした郵便番号の取り扱いその2」として、前回より難易度が高い処理について取り上げましょう。
前回は、単純にデータをつなげるだけの処理でしたが、本日はデータエクスポートした際に抜け落ちる「0」に着目し、「〒△△△-▲▲▲▲」というデータ形式を整えることを取り上げます。なお、説明の都合上、「▲▲▲▲」を子番号を呼ぶことにいたします。
【質問】
当社で利用している給与計算ソフトから住所録を作成しようと思い、データをエクスポートしたところ、郵便番号が「456-0003」というデータが「456」と「3」と分かれてしまいました。「3」の前には「0」を加えて「456-0003」としたいのですが、どのようにすれば良いでしょうか?他にも「456-0231」というデータもあります。
【回答】
EXCELのLEN関数、REPT関数および前回説明したCONCATENATE関数を利用することで、子番号が何桁であっても7桁の郵便番号に変換できます。
【解説】
EXCELでは原則として「0003」というデータは数値として扱い、整数値の前の「0」は省いて「3」と認識してしまうため、質問のような事態が発生します。これに対処するためには、郵便番号の形式を整える前に、「3」の前に「0」を付加する必要があります。複数の関数を使いますので、STEPを4つに分け、2つの例を並行記載して説明します。
[STEP1]必要な「0」の数を求める
郵便番号の子番号は1桁~4桁の可能性があります。STEP1では子番号の前にいくつ「0」が必要になるかを調べます。これには文字列の長さを調べるLEN関数を使用します。
■EXCELのヘルプ
=LEN(文字列)
文字列の文字数を返します。
■利用方法
=LEN(3) →「1」
=LEN(231) →「3」
これにより、子番号の長さが分かりましたので、子番号4桁から既にある桁数を差し引き、必要な「0」の数を求めます。
■計算式
= 4 – LEN(3) →「3」
= 4 – LEN(231) →「1」
[STEP2]「0」を付加する
次にREPT関数を利用して「3」に前に「0」を付加します。
■EXCELのヘルプ
=REPT(文字列,繰り返し回数)
文字列を指定された回数だけ繰り返して表示します。
■利用方法
文字列を「0」とし、繰り返し回数をSTEP1で求めた数を指定します。
=REPT(0,4-LEN(3)) →「000」
=REPT(0,4-LEN(231)) →「0」
[STEP3]文字列と子番号を接続する
STEP2で求められた文字列と子番号をつなげます。
■計算式
=CONCATENATE(REPT(0,4-LEN(3)),3) →「0003」
=CONCATENATE(REPT(0,4-LEN(231)),231) →「0231」
[STEP4]計算式のまとめ
郵便番号全体をつなげます。
■計算式
=CONCATENATE(456,”-“,REPT(0,4-LEN(3)),3) →「456-0003」
=CONCATENATE(456,”-“,REPT(0,4-LEN(231)),231) →「456-0231」
【まとめ】
今回は、複数の関数を入れ子にして説明したため、EXCELをあまり利用されていない方にとっては多少難しいものになったかと思います。弊社では、今回説明した内容を給与計算の受託時によく利用しています。画一的に効率よく作業するには大変便利な内容になっているでしょう。
※関数の中で文字列を使用する際は通常、ダブルコーテーション(”)でその文字を囲む必要がありますが、数値については、ダブルコーテーションの有無に関わらず、文字列として判断されます。
(宮武貴美)
当社ホームページ「労務ドットコム」にもアクセスをお待ちしています。