特定の文字列を抜き出す方法
今日は、元データから特定の文字列を抜きだす方法をお伝えします!
というのも、先日
このデータから決まった文字列の後の数字を抜き出す方法ってある?
と、質問を受けたんです。
そんなにデータ量もない20行くらいログみたいのが出力されていて、そこの特定の文字列の後にある数値を抜き出してExcelで分析したいって事だったんですが、こういったことって仕事でデータの分析とかやってると、結構な頻度で遭遇するんですよね~
例えば
例えば、こんな感じのテキストデータがあったとします。
例はわかりやすくこんな感じでw
山田 国語/100 数学/70 英語/50 前田 国語/90 数学/80 英語/60 山元 国語/80 数学/90 英語/70 佐藤 国語/70 数学/100 英語/80
データの分析をすることが最近多くて、日頃取り扱っているデータはこんなデータではないですが、メールで送られてきたデータを一発でエクセルデータに出来れば、いちいち抜き出して書く必要ってなくなりますよね。
今回の例は、行も列も少なく規則性が見えやすいデータを準備しましたが、データの規則性を見つけることで、簡単にデータをExcelに転記し分析を素早く行うことが出来ます。
特定の文字列の抜き出し方を調べると
よく、特定の文字列の抜き出し方って調べると、こういった方法が出てきます。
- LEFT関数
- MID関数
- RIGHT関数
しかし、この関数たちを使いこなすのはちょっと難しいし時間がかかりますよね。
皆さんが知りたいのは、簡単に出来る方法だと思います。
まず、Excelで分析を行いたい元データをよくみてみて、規則性を見つけるんです。
データの構成を見極める
今回の例ではレコードがこんな感じでデータが構成されています。
名前 | 半角スペース | 国語 | スラッシュ | 点数 | 半角スペース | 数学 | スラッシュ | 点数 | 半角スペース | 英語 | スラッシュ | 点数 |
こうやって見た時に、関数で特定の文字列を抜き出す表現を行うとき、FIND関数を用いて、全てのレコードのデータに共通している部分を検索したあとに抜き出すという方法が多く紹介されているように感じます。
私は、この方法を見た時そんなことする必要ないよね。って思ったんです。
Excelには、こんな機能があります。
区切り位置
区切り位置を設定出来るんです。
では、区切り位置をつかって、元データをそのままコピーしてExcelに貼り付けて区切り文字に、スラッシュと半角スペースに設定するとどうでしょう。
完成
名前 | 国語 | 点数 | 数学 | 点数 | 英語 | 点数 |
ってデータが作れませんか?
こんだけデータが出来てしまえば、特定の文字列の後の数値を抜き出しているし、いつものデータ分析が可能じゃないでしょうか?
例のデータでは、平均点などを分析するかと思いますので、点数の列がずらっと人数分しっかりできていれば平均点もぱぱっと計算出来ちゃいますね!Excelってすごい!w
国語と数学、英語の列はいらなくない?って事であればを列ごと削除してあげるだけでいいんです。点数の列に見出しを作ってあげれば最初から表計算用に準備されたデータみたいに扱うことが可能ですしね。
最後に
どうしても、データに規則性が見つけられない場合は、確かにFIND関数と文字列を抜き出す3つの関数を組み合わせて抜き出していかなければならない場合もあるかもしれませんが、データ化をする元データを見た瞬間に、規則性を見つけることが出来れば、右から何文字を抜き出すとか、左から何文字を抜き出してって考える必要はないんです。
時間がもったいないです。
よく文字列を抜き出す方法で、メールアドレスの@以下とアドレス部を分ける方法なんかが例で挙げられていますが、一瞬で区切り文字を@にしてあげればよくね?
って思いついちゃいますね。データを分析する前の元データから分析可能なデータを作成する段階で時間を使ってしまうのは、大変もったいない。
分析するところに沢山の時間を当ててあげた方がよっぽどいいと思います。データを分析する時の目的は、元データを分析しやすいデータに変換することではないですものね。
今回の例ではほぼ一発で、表が出来ちゃいましたが、こんなデータの方が珍しいと思います。
しかし、こういったことの組み合わせを考えて、どれだけ早く特定の文字列を元データから抜き出せるかを考えられるかが重要だと私は思っています。
それでは、また!