仕事がススむ関数(16)意味あるコード類の正確な生成には引数ナシROW/COLUMN関数でセル位置を取得するのが便利!

  • ブックマーク
  • Feedly
  • -
    コピー
仕事がススむ関数(16)意味あるコード類の正確な生成には引数ナシROW/COLUMN関数でセル位置を取得するのが便利!

せるワザ

もし、あなたがそれなりのイケメン君だとして...、

(あ、失礼しました。仮説ではなく、あなたはイケメン君でしたね!)

お付き合いしている女性から、「運転免許証を見せて」と言われたら、どう思いますか?

「なぜだろう?」と首をかしげているようでは、まだワキが甘いですぞ!

今どき女子は、免許証の写真ばかりでなく、12ケタの免許番号からも、「自分が”本命彼女”か、”遊び相手”か」を見きわめようとしているらしいです( 参考;Oggi.jp ) こわっ!!

それはさておき、12ケタの免許番号には、出身地(免許初回取得地)や紛失・再発行履歴まで、さまざまな情報がふくまれます。だから、免許番号をひかえると、個人が完全に特定できてしまうのです。

仕事でも、新しいデータベースをくむ時など、このような「意味をもつ数列」(コード/ID)をあつかうことがありませんか?

商品コード/社員コード/取引先コード/営業拠点コード etc.

なぜなら、数字に意味をもたせることで、分類(仕分け)のキー(鍵)とすることができるからです。

とはいえ、Excelのオートフィルに、このような「数字の意味」を考えた自動複製はむずかしいでしょう。そのような時には、ぜひROW関数を使ってみてください。

ROW関数とCOLUMN関数は、引数ナシでも使用できます

ROW関数COLUMN関数の基本構文は以下の通りです(いずれも、Microsoft supportページの情報を転載)。

ROW([範囲])

COLUMN([範囲])

引数の[範囲]は省略可能で、省略した場合には、関数式が入力されているセル番地(ROWの場合は行番号、COLUMNの場合は列番号)が結果として返されます。

仕事がススむ関数(16)意味あるコード類の正確な生成には引数ナシROW/COLUMN関数でセル位置を取得するのが便利!

セルD5に、=ROW(D5)という関数式を入れると、返り値は5(5行目)となります。

引数ナシでOKですから、=ROW()としても同じ結果が得られます。

仕事がススむ関数(16)意味あるコード類の正確な生成には引数ナシROW/COLUMN関数でセル位置を取得するのが便利!

だから何? と思うかもしれません。

しかし、じつはROWやCOLUMNは、引数ナシで使って、セル位置やデータの個数を数えるのに大活躍する、とても便利な関数なのです。 次に、ROW関数を使って、ダミーの社員コードを、Excelで自動生成してみましょう。

文字列中間の連続データを自動生成するには、オートフィルではなく、引数ナシROW関数を使ってみましょう

たとえば、とある会社の社員コードが、以下のように決められているとしましょう。

A230011

最初のアルファベット1文字が、無期雇用正社員か、期間限定契約社員か、など契約形態を分類する記号。

次に、入社年の下2ケタ(2023なら23)が続き、その年に入社した社員の順番を、通し番号3ケタであらわします。

最後に、数字入力ミスなどを確認するためのチェックデジット(ここでは、2ケタ目から6ケタ目までの5つの数字を足して5でわり、小数点以下を切り捨てたものを、確認用チェックデジットとします)を足して完成とします。

この社員コードを、2023年入社の延べ999人分、Excelで自動生成するには、どうしますか?

一番最初に思いつくのが、フィルハンドルをつかんで、一気に下へ999行分ひっぱって連続データを作る方法ではないでしょうか。 しかし、検算チェック用デジットが末尾にあるレコードでは、この手は使えません。

仕事がススむ関数(16)意味あるコード類の正確な生成には引数ナシROW/COLUMN関数でセル位置を取得するのが便利!

オートフィルでは、セル内にあるレコードの一番右の数字のみを加算していきますので、このケースでは、あやまった社員コードが大量に生成されてしまいました。

連続データとしたいのは、4ケタ目から6ケタ目までの3ケタ数値だけなのですが、この場合には、どう処理したらよいでしょうか?

ここで、引数ナシROW関数の出番です。

仕事がススむ関数(16)意味あるコード類の正確な生成には引数ナシROW/COLUMN関数でセル位置を取得するのが便利!

“何行目”の値をかえす引数ナシROW関数の計算結果を、”何人目”におきかえればよいのです。上の例では、1行目を見出し行として、2行目に1人目のレコードをおきました。

セルB2へ、

=TEXT(ROW()-1,”000”)

という関数式をいれると、3ケタ表記テキストとして、「001人目」という結果がかえってきます。あとは、オートフィルで必要な人数分だけ、連続データを生成すればよいのです。

最後に、セルA2へ、

=CONCAT("A23",B2,C2)

※セルC2は確認用チェックデジット

と入力し、オートフィルで下行へ関数式を複製すれば、正しい続き番号の社員コードが、必要人数分だけカンタンに生成できます。 同様の文字列操作で、ハイフンなど記号付きコードでも、ラクに連続データを生成することができますので、ぜひ試してみてください。

まとめ;オートフィルで対応できない連続データの作成には、「何行目」「何列目」などの情報をうまく使いましょう

オートフィルで連続データをつくること自体は、カンタンで、よく利用される手段です。

しかし、Excelはその連続データの意味を考慮しませんので、いそがしさにかまけて、無意識に作業をしてしまうと、とんだまちがいデータをゲットすることもあるのです。

笑い話に、「金沢21世紀美術館の書類をオートフィルで複製してしまい、金沢118世紀美術館を作ってしまった」なんていう”事件”も、過去にありました。

ミスがゆるされない業務用書類でこのような事態とならないよう、まずはセルの1丁目1番地から、人間がキッチリ数字の意味を把握して、正しいコード生成式をつくりましょう。

そして、現在地や必要なレコード数を計算するには、引数ナシのROW関数やCOLUMN関数を使うのが、カンタン便利です。

羅列されている数値の意味を正確に把握して取り回すことが、今後ますます必要になりそうです。

せるワザ

そのスキルをみがいておかないと、オチオチ恋におちることもむずかしくなるかもしれませんね…!?









小さなお悩みでも、
お気軽にご相談ください!

お急ぎの方はお電話にてお問い合わせください

050-6867-2130
せるワザロゴ

セルワザでは、役に立つEXCELワザをご紹介しております!

  • ブックマーク
  • Feedly
  • -
    コピー