患者中心の保健医療を支える
処方情報分析のリーディングカンパニー

 03-3239-6840

関数を使って文字列を操ってみよう2(基礎編)~MID関数、FIND関数、SEARCH関数

time 2017/11/20

※解説記事内の画像はExcel 2010のものです。

こんにちは。れあれあです。
最近、うさぎを飼い始めました。でもまだ、私をシラッとした目でしか見てくれないので、少々さみしいです。認識してもらえるように頑張ってます。

さて今回は、以前ご紹介した文字列を操作する関数の第2弾です。

前回の復習はこちらから。
関数を使って文字列を操ってみよう(基礎編)~LEN関数、LEFT関数、RIGHT関数
関数を使って文字列を操ってみよう(応用編)~LEN関数、LEFT関数、RIGHT関数

お試し文字列データ準備

サンプルは前回と同じものを使います。
%e2%91%a0%e3%82%b5%e3%83%b3%e3%83%97%e3%83%ab%e6%96%87%e5%ad%97%e5%88%97
①は、数字、ハイフン、スペース、カタカナ文字、アルファベットをすべて半角にしています。
②は、すべて全角にしています。

指定した位置から文字を取り出す、MID関数、MIDB関数

この関数は、LEFT関数、RIGHT関数と同様に文字を取り出すことができます。
違いは、開始位置と取り出す文字数を指定できる点です。

MID関数 指定した文字列に対して、指定した開始位置から、指定した文字数分を取り出します。
全角文字、半角文字、共に「1」と数えます。
MIDB関数 指定した文字列に対して、指定した開始位置から、指定したバイト数分を取り出します。
全角文字は「2」。半角文字は「1」と数えます。

mid
②MID関数
※1つでも引数の指定を省くとエラーになります。
※スペース、句読点も半角全角に応じて数えます。

任意の文字列の位置を調べる、FIND関数、FINDB関数

この関数も文字列操作に絡んだものですが、今までとは異なり「位置」を調べることができます。
なので、関数の実行結果は「数字」です。

FIND関数 検索文字列が、指定した対象の文字列の中で先頭から何文字目にあるかを調べます。
全角文字、半角文字、共に「1」と数えます。
FINDB関数 検索文字列が、指定した対象の文字列の中で先頭から何バイト目にあるかを調べます。
全角文字は「2」。半角文字は「1」と数えます。

FIND
※[開始位置]を省略した場合は、1(先頭)が設定されたとみなされます。
※スペース、句読点も半角全角に応じて数えます。

実際に関数を使った結果がどうなるか、色々なパターンを試してみます。

■シンプルに1文字「区」が何文字目にあるか調べます。
③-1FIND
①も②も同じ結果です。何文字(バイト)目にあるか数字が出ています。

■文字列を指定して、その文字列が何文字目から始まるか調べます。
③-2FIND
「神保町」が複数含まれている場合は、[開始位置]から数えて早いほうの「神保町」の結果が出ます。
ふと、本当に「神保町」という文字列を見てるの?「神」だけ見てるのでは?と、思ってしまったので「神保長」という文字列を入れてみました。
③-2FIND(2)
エラーになりました。調査文字列の中に「神保長」はないと言っています。正しいですよね。
文字列の頭「神」だけを検索しているわけではないことがわかりました。
横道にそれてしまったので戻ります。

■半角文字と全角文字は区別されるのか調べます。
わかりづらいですが、①には半角文字「N」、②には全角文字「N」が含まれています。
③-3FIND
検索文字列に半角文字「N」をセットした場合の結果を見てみると、②がエラーになりました。
半角の「N」は、①には含まれているので、位置が示される。②には含まれていないので、エラー。
よって、半角と全角は区別されることがわかります。

■アルファベットの小文字、大文字は区別されるのか調べます。
③-4FIND
検索文字列に小文字「n」をセットした場合の結果を見てみると、すべてエラーになりました。
①、②ともに大文字の「N」はありますが、小文字はありません。
よって、小文字と大文字は区別されることがわかります。

任意の文字列の位置を調べる、SEARCH関数、SEARCHB関数

FIND関数と同じく、文字列の「位置」を調べる関数です。
使い方によっては、FIND関数と結果は変わりません。ただ、SEARCH関数だけできることもあります。

SEARCH関数 検索文字列が、指定した対象の文字列の中で先頭から何文字目にあるかを調べます。
全角文字、半角文字、共に「1」と数えます。
SEARCHB関数 検索文字列が、指定した対象の文字列の中で先頭から何バイト目にあるかを調べます。
全角文字は「2」。半角文字は「1」と数えます。

SEARCH
※[検索文字列]に「""」(空白の文字列)を指定すると、開始位置の値が返されます。
※スペース、句読点も半角全角に応じて数えます。
FIND関数と同じ検索文字を使ってみてみましょう。

■1文字「区」が何文字目にあるか調べます。
④-1SEARCH
FIND関数と同じ結果になりました。他に試した内容も同様の結果になります。

・文字列を指定して、その文字列が何文字目から始まるか調べます。
④-2SEARCH

■半角文字と全角文字は区別されるのか調べます。
④-3SEARCH

■アルファベットの小文字、大文字は区別されるのか調べます。
まずは、検索文字列に半角小文字の「n」を入力します。
④-4SEARCH(2)
結果を見てみると、①が数字になりました。検索文字列が存在することを示しています。
半角大文字の「N」がヒットしているようです。FIND関数ではエラーになっていました。
次に、検索文字列に全角小文字の「n」を入力します。
④-4SEARCH(3)
今度は②が数字になりました。
全角大文字の「N」がヒットしているようです。

SEARCH関数は、小文字と大文字は区別しないで文字列の検索を行うということがわかりました。FIND関数とは異なる部分ですね。

最後に、SEARCH関数だけにある大きな特徴をご紹介して終わりにしたいと思います。

■検索文字列にワイルドカード文字が使えます。
ワイルドカード文字(* 任意の文字列/? 任意の1文字)を使って、パターンに一致する文字列の位置を調べることができます。
④-5SEARCH
上記例は、調査文字列内に、半角の「-(ハイフン)」が含まれていれば、その位置を結果として返します。
①のSEARCH関数結果は、「?-*」に該当する部分として「1-11-…」がヒットし、最初の「1」が10番目にあたるということですね。
SEARCHB関数も、同様に最初の「1」が19バイト目にあたるということです。

ワイルドカードについては、当ブログでもご紹介しています。
ワイルドカードについて

ご参考になさってください。

終わりに

いかがでしたか。

ほぼ、似たような結果を出す関数ですので、どちらを使うかはご自身の好みによるものだと思います。FINDのほうが入力文字数が少ないので、省エネだと個人的には思います。

関数は使ってみたほうが理解が早くなるものだと信じております。ぜひ、お試しください。

最後までお読みいただき、ありがとうございました。

タグ

このブログについて

このブログ(JMIRI Office部)は、製薬企業のマーケティング部門の方やアナリティクス/レポーティングを担当している方に向け、Excel / PowerPointなどのOfficeソフトの使い方、分析の考え方、グラフの使い方、美しい資料の作り方、効率的な作業の進め方など、仕事に役立つ様々な情報を少しゆるめに発信していきます。

Author:医療情報総合研究所(JMIRI)について

医療情報総合研究所 JMIRIは、まだビックデータという言葉が無いころに日本で初めて処方情報データベースの運用・分析を開始した、処方情報分析のリーディングカンパニー。これまでに累計数十万ページ規模の分析レポート/グラフを製薬企業に向けて作成/提供してきました。

[詳細]


お問い合わせ

arrowup

mail