ヘルプの森~Excel・Access・Office全般ヘルプデスクサイト

No.003

特定の文字より左部分にある文字列を取り出す 《Left・InStr》

2003/2007/2010/2013/2016

特定文字列より左にある文字列を取り出したい、というお問い合わせをいただきました。

左から取り出すのはLeft関数、特定文字列の位置を調べるために InStr関数 を使用します。次の式で求められます。

  Left([対象のフィールド], InStr([対象のフィールド],"特定文字列")-1)

ポイントはInStr関数です。

InStr関数で返される特定文字列のある位置はその文字列を含んだ文字位置となります。
したがって特定文字列より左部分を取り出すのは、その文字位置を含まない、つまりInstr関数で求めた答え-1文字分の文字列ということになります。

Instr関数

InStr関数は使用頻度が高い関数です。
今回の例のように、多くが2番目と3番目の2つの引数のみを指定するかなと思います。第1引数(数値指定)は省略可能なため、最初に指定した引数がフィールド名など文字列式であれば、検索対象の文字列である第2引数と認識されます。
引数については、下記の<ヘルプmemo>をご参照ください。

InStr関数はExcelのFIND関数と同じような働きをしますね。

ヘルプmemo

<InStr関数>

文字列の中から指定した文字列を検索し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返す文字列処理関数です。
 構文: InStr([start, ] string1, string2 [, compare ] )
 引数:
  start …検索の開始位置を表す数値式を指定[省略可]
  string1 …検索対象となる文字列式を指定
  string2 …検索する文字列式を指定
  compare …文字列比較の比較モードを指定する番号を設定[省略可]
 ヒント:
  引数[start]を省略すると、先頭の文字から検索します。

詳しくはMicrosoftのサポート ページ「InStr 関数」をご参照ください。

関連ヘルプ

2つの日付の期間を求める 《DateDiff》
数値の先頭に0を付け桁を揃えて表示する(ExcelならTEXT関数のような) 《Format》
条件に一致するレコードの件数を求める(ExcelならCOUNTIF関数のような) 《Dcount》
文字列を半角または全角にする(ExcelのASC/JIS関数のような) 《StrConv》
DCount、DLookUpなど定義域集合関数について
特定の文字より右部分にある文字列を取り出す 《Right・Instr・Len》
twitter hatena line pocket