• ベストアンサー

アクセスのクエリに「Find関数」はない?

テーブルに「あいうえお」と入力し、 FIND関数: find("う",[テーブル]![フィールド],1) と入力し、データシートビューで表示しようとすると 『式に未定義関数 <'find'> があります。』 とエラーになります。 確かに、ビルド→関数→組み込み関数の中に「find」はないし、 入力し終わっても、「F」の部分が大文字になりません。 ということは「find」は使えないのでしょうか? となると、 データの中の文字の位置を調べたい時はどうすればいいでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

>ということは「find」は使えないのでしょうか? 使えません。 Findにあたる関数はInstrです。 Instr([開始位置,]対象文字,検索文字[,検索の型]) で計算できます。 どうしてもFindがいいのであればモジュールにて Function Findx(MOJI1,MOJI2,KAISHI)  Findx = Instr(KAIHI,MOJI2,MOJI1) End Function としてユーザー定義関数に登録(Findは使えないので後ろにx付けてます。) Findx("う",[テーブル]![フィールド],1)

kuhffd
質問者

お礼

エクセルのfindがアクセスのInstrなのですね。 参考になりました。ありがとうございます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Findはエクセルの関数と、VBAのメソッドです。 ACCESSの関数は、こんなところへ質問する前に、ACCESSの関数の単行本やGoogleで「ACCESS 関数」で照会すれば、網羅的に記事が出てきます。 http://www.pros-access.jp/glossary/function.html など。 この中にはありません。 ーー 別に、「Instr」関数というのが在ります。検索開始位置が指定できてVBAでは同一文字列が2回以上無いかチェックに便利です。 旧Basic以来の有名な関数ですよ。 ーー 例えば下記で氏名フィールドの姓だけ取り出すフィールドが作れます。区切りが半角スペースか全角か注意が必要。 式1: Mid([氏名],1,InStr([氏名]," ")-1) ーー 氏名に「田」があるかないか 式2: IIf(InStr([氏名],"田 ")<>0,"田あり","田なし")

kuhffd
質問者

お礼

どうもありがとうございました。