ども。
夜な夜な自宅前の除雪に励んでいる担当ちゅんです。
さて、本日の記事はある意味恒例?となった「ネタに困るとEXCEL関数シリーズ」です。
EXCELは本当に奥が深くて、処理に関数を使うか否かで作業時間が倍以上変わってきますよね。
そこで、今日ご紹介する関数は「FIND」です。
この関数、あまり一般的ではないかもしれません。MS Office のサポートページで検索すると、次のように説明されています。
FIND 関数では、指定された文字列 (検索文字列) を他の文字列 (対象) の中で検索し、その文字列が他の文字列内で最初に現れる位置を左端から数え、その番号を返します。
これだけだと、どんな場面で便利に使えるのかよくわかりませんよね。私が今回、実際に出くわした事例で説明しますが、次のような文字列が100行以上ありました。
事業説明会(18:00)5名出席
システム操作研修(17:30)12名出席
職員会議(9:00)7名出席
機器設置作業(18:00)3名出席
よくある「日報」形式の文字列ですね。これを、
事業説明会
システム操作研修
職員会議
機器設置作業
このように整形したいのです。
1行ずつ文字を削除してもいいのですが、関数を使うと一瞬で終わります。その魔法のような関数がこちら。
=LEFT(A1,FIND("(",A1)-1)
FIND関数で始まりの括弧「(」が何文字目にあるかを調べ、その値から1を引いた文字数分までをLEFT関数で取り出すというカラクリになります。
全ての行に共通して同じ文字が使われている場合にのみ使えるテクニックになりますが、この業界だと、メールアドレスの@よりも前の部分だけを取り出すといったときにも重宝しそうです。
でも、この方法だと
サーバー(Web)再起動(19:00)2名出席
このように、ターゲットにしたい括弧の前に残したい括弧が含まれていると失敗してしまいます。そんなときの回避方法もあるようですが、そこにこだわると今度は「関数を使ったことで逆に時間がかかるパラドックス」に陥りそうだったので、素直に手作業とのハイブリットで処理しました。
「こういうことができる」と知っているだけで、いつか役に立ちますよ。
(投稿者:ちゅん)