Access InStr関数での文字抽出方法

このQ&Aのポイント
  • AccessのInStr関数を使用して、「-」または「+」より前のデータを抽出する方法を教えてください。
  • 現在、「-」より前のデータを抽出するために、Left関数とInStr関数を組み合わせて使用していますが、文字列に「+」が含まれる場合の抽出方法がわかりません。
  • また、既存のコードを修正したいと思い、or演算子を使用してコードを書き換えましたが、エラーが発生しました。正しい書き方を教えてください。
回答を見る
  • ベストアンサー

Access InStr関数 AかBが入っていた場合、抽出したい

Access2003です。 フィールドに「A-A」というデータがあります。 「-」より前のデータを抽出する方法として、 Left([フィールド],InStr([フィールド],"-")-1) というコードを使っていました。 ※「-」より前の文字数は1文字とは限らないので・・・。 しかし 「A-A」「A+1」のように、「-」または「+」より前のデータを抽出する というのは可能でしょうか? orを使って Left([フィールド],InStr([フィールド],"-"or"+")-1) と書き直しましたが、エラーになってしまいます(安易にコードを修正しすぎですが)。 どうやってコードをかけば良いのでしょうか?

noname#248169
noname#248169

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

left([フィールド],instr(replace([フィールド],"+","-"),"-")-1) +を-に置き換えて、同じ処理をすればよいわけです。

noname#248169
質問者

お礼

ありがとうございました。 無事に完成しました。

関連するQ&A

  • Excel 2010 InStrに当たる関数

    当方、Windows7、Excel2010の環境です。 VBAで組むほどでもなく、単に「=Left(a2, InStr(a2, "-") - 1」と 「-」の手前の文字を取り出したいだけなのですが、 「#NAME」エラーが出てしまいます。 調べて見ると、Excelの関数に「InStr」が見当たりません。 InStrのところを、どう変えれば、良いのでしょうか? 教えてください。

  • Accessでの抽出について

    Accessで下記のようなテーブルがあるとします。 フィールド1  フィールド2  フィールド3 ----------------------- Aさん      20       200 Aさん      10       180 Bさん      10       300 Cさん      10       250 Cさん      30       310 条件1・・・フィールド2が「20」 条件2・・・フィールド3が「200」 この条件が当てはまる、フィールド1のデータはすべて抽出というふうにしたいのですが・・・。 (上記のテーブルでは、1件目と2件目のレコードがあてはまります。) どのようにして抽出したらよいでしょうか?よろしくお願いします。 Access2000を使用します。

  • アクセスのクエリ抽出について

    アクセスで、テキストデータを開き クエリウィザードからフィールドの抽出条件として 文字が含まれているものと文字が含まれていないものと それぞれ抽出したいのですが Likeの式から抽出出来るのでしょうか? なにかの文字を含んでるデータに対しては 抽出できるのですが、うまく抽出出来ません。 下記のようなイメージで抽出したいと思ってます。 例 データ合計5件    "00000001234-23 " "12345672-1-2 " "" "55145672-1-3-2 " ""    データあり3件    "00000001234-23 " "12345672-1-2 " "55145672-1-3-2 "    データなし2件    "" "" 宜しくお願いします。

  • アクセス 抽出条件AかつBのカウント

    度々すいません。 フィールド[色]のうち「赤色」 かつ フィールド[大きさ]の「大」 である人(フィールド[名前])の数を抽出したいです。 Aさんは赤色の大をいくつ頼んだのか ・・・と言うことが分かれば良いのですが。

  • Accessで複数条件抽出

    Accessで複数条件抽出をする方法を教えてください。 フォーム内に[A]、[B]のテキストボックスがあり、検索用のテキストボックス[C]を設けており、[C]入力した文字が[A]または[B]に入力されているデータと一致するものを抽出したいのですが、以下のようなコードではうまくいきません。 Me.Filter="A='" & Me![C] & "'" Or "B='" & Me![C] & "'" どのようにすればうまく抽出できるか教えてください。

  • Accessのクエリのデータ抽出のエラー?について

    お世話になります。 Accessのクエリでのデータ抽出について教えてください。 テーブルからフィールドを商品コードと出荷日の2つを選択し、 集計を使用して、商品コードでグループ化して、出荷日で最大にします。 すると、抽出条件で商品コードを指定すると抽出できるのですが、抽出条件で 指定せずすべてのデータを抽出すると出てこない商品コードがあります。 たとえば[A]という商品コードを抽出条件に指定すると抽出できるのですが、 抽出条件で指定せずすべてのデータを抽出するとこの[A]という商品コードが 抽出されません。 何が理由なのかお分かりになりましたらどうぞよろしくお願いいたします。 当方SQLがわかりませんのでクエリのデザインビューでご説明いただけますと 幸いです。

  • アクセス クエリー 抽出条件について

    アクセス クエリー 抽出条件について たとえば文字列で5桁の仕入先コードフィールドが有るとします。で1と3と5を除くレコードを表示させたいときは 抽出条件をどの様に設定したらよろしいでしょうか?

  • Access の同一テーブルで更新データを抽出したい

    Accessでまったく同じテーブルが2つあるとします。フィールド数は40くらい。その各フィールドで一つでも更新のあったデータのみを抽出したいのですが簡単な方法を教えて下さい。因みに各フィールドにはNull値も含まれます。

  • AccessのIIF関数

    Access2000のクエリで、 抽出:IIf(Left([品番],1)=2,Left([品番],4),Left([品番],7))という関数をフィールドに設定しました。 品番 2006aa123は、2006 h2006aa123は、h2006aa と各レコードに入るはずですが、2006aa123はちゃんと2006と入りますが、h2006aa123は、#ERRORになってしまいます。 なぜでしょうか? よろしくお願いします。

  • ACCESS更新クエリで型変換エラー

    ACCESSで更新クエリを作成して実行したら 「…個のフィールドで型変換エラーが発生したためレコードを更新できませんでした。」 となってしまいます。 「医薬品コード(-)」というフィールドに「医薬品コード」フィールドの文字から( )で囲まれた部分を省いた文字を更新するクエリを作りたいのです。 更新クエリのレコードの更新セルに入力しているのは Left([医薬品コード],InStr([医薬品コード],"(")-1) です。 更新するフィールドの設定は 値要求:いいえ、空文字列の許可:はい、インデックス:いいえ、Unicode圧縮:いいえ 型変換エラーの原因はなんでしょうか?

専門家に質問してみよう