前提
弊社では、新たにGoogleアカウントを発行する際、
たとえば「ヤマダ タロウ」さんの場合、tarou.yamada@xxxxx.co.jp
というアドレスを発行します。すでに「ヤマダ タロウ」さんがいて今回が2人目の場合、末尾に数字をつけ、tarou.yamada2@xxxxx.co.jp
となります。
課題
毎回、アカウント作成の前に、
ユーザ名に被りがないかを検索 → 被りがあれば数字をつける
という作業を手作業でしていました。ちょっとした作業ですが、毎月10〜20人超が入社するため、意外と手間がかかっていました。この作業を今回、省力化します。
完成形
ということで、完成形がこちら。
仕組み
- B3に
tarou.yamada
の形式で入力 - B3の値が、
②純粋なlast+first
に記載された一覧を含めて何個目なのかをカウント=if(countif('②純粋なlast+first'!$A$2:$A$12,B3)+1=1,"",countif('②純粋なlast+first'!$A$2:$A$12,B3)+1)
- B3の値と2で数えた数を合体
=B3&C3
- ユーザ名ができあがり
何が難しかったの?
お気づきの通り、ここまではとても簡単なものです。
問題は、「②純粋なlast+first」の一覧を作成することにありました。
現在、弊社では上記のルールでメールアドレスを作成しているため、純粋に姓名をくっつけただけの値はもってなかったのです。だから、その一覧を作成する必要がありました。
実現方法
以下の関数を組むことで、実現しました。
=iferror(SUBSTITUTE(A2,REGEXEXTRACT(A2,"[0-9]+"),""),A2)
-
大枠の構成としては、SUBSTITUTE関数で文字を置き換える。
=SUBSTITUTE(文字列, 検索文字列, 置換文字列, 置換対象)
-
今回は数字を検索して、数字を取り除きたいので、置換文字列をREGEXEXTRACT関数で指定する。
=REGEXEXTRACT(テキスト, 正規表現)
-
"[0-9]+"
の部分で、0〜9の値を指定。
REGEXEXTRACT関数はスプレッドシート専用で、Excelでは使用できないので要注意。
感想・課題
完成形だけを見ると、シンプルな構成で簡単なものですが、REGEXEXTRACT関数がキーになります。この関数の存在しり、使い方を理解するまでに時間を要しました。
というか、そもそもこのアドレスの命名規則がイケてない。
僕がヤマダタロウさんだったら、ただ入社のタイミングが遅かっただけなのに、「9番目」っていう数字がついて、まるで自分が9番煎じかのように受け取ってしまう。
なので、この命名規則そのものを変えていきたい。