• ベストアンサー

Accessの文字数の決まっていない文字列の抽出(応用編)

以前、Excelで、同じような質問をさせていただきましたが、そのAccessの応用編です。 1列のレコードで、 ドキュメント 147, [担当問題.xls](限定者 ABCDE)は [AB_ARI2](ボート PR0089881CNN88:経由)・・・・・ このようなレコードが1万以上あると考えてください。 で[ ]([ ]は無いものと考えてください)で囲んだ2箇所を新しい2列にそれぞれ抜き出す場合、どうすればよいでしょうか。 ただし、最初の[ ]には、()が入る可能性がありますし、半角が入る可能性もあります。文字列も決まっていません。あらゆる可能性がありますので、柔軟な答えがあればお願いします。

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

  • ベストアンサー
  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.2

クエリーの式は、次の通り。 式1: Mid([F1],InStr([F1],",")+2,InStr([F1],"(")-InStr([F1],",")-2) 式2: Mid([F1],InStr([F1],"は ")+2,InStr(InStr([F1],"は "),[F1],"(")-InStr([F1],"は ")-2)

kaishi0823
質問者

お礼

ありがとうございました。助かりました。遅れてすいませんでした。

その他の回答 (2)

noname#22222
noname#22222
回答No.3

ID  データ 1  ドキュメント 147, 担当問題.xls(限定者 ABCDE)はAB_ARI2(ボート PR0089881CNN88:経由) というレコードが存在する場合、 固定的な区分文字、区分文字列が存在しないと抜く出しは不可能です。 そこで、幾つかの固定的な区分文字列が存在すると仮定すると、 ID  エクセルファイル名 経路 1   担当問題.xls    AB_ARI2 とクエリで抜き出すことが可能です。 抽出クエリSQL文 SELECT ID,   CutStr(CutStr([データ],"xls",1),",",2) & "xls" AS エクセルファイル名,   Cutstr(Cutstr([データ],"(ボート",1),")は",2) AS 経路   FROM テーブル1; エクセルファイル名・・・・',' と 'xls' で囲まれていることが条件。 経路・・・・・・・・・・・・・・・・・・')は' と '(ボート' でで囲まれていることが条件。 もちろん、標準モジュールに次のようなCutStr関数を登録する必要があります。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function

kaishi0823
質問者

お礼

ありがとうございました。助かりました。遅れてすいませんでした。

回答No.1

ちょっと質問がわかりずらいので、整理出せていただきます。 例の場合のドキュメント147は無視してよいわけすね? >[ ]([ ]は無いものと考えてください) [ ]で囲まれ部分をを抽出し、[ ]は取り除くと解釈してよいですか? (限定者 ABCDE)(ボート PR0089881CNN88:経由)は処理対象外となるのですね? 2列に抜き出すということは、 1つめの[ ]ものを探し出し、[ ]を除いた中身を1列目に 2つめの[ ]ものを探し出し、[ ]を除いた中身を2列目に入れる、という解釈でよろしいですか? 抜き出した情報は別のテーブルに格納するということでよろしいでしょうか、それとも、既存のテーブル(ドキュメント 147, [担当問題.xls](限定者 ABCDE)は [AB_ARI2](ボート PR0089881CNN88:経由)・・・・・ が入っているテーブル)の2列目、3列目のに入力するのですか。 (まあ、アクセスは前者でやっておけば、すぐ後者の形にできますけど) 以上を明確にしていただければ、多少はお役に立てるかも知れません。

kaishi0823
質問者

お礼

ありがとうございました。遅れてすいませんでした。

関連するQ&A

専門家に質問してみよう