• ベストアンサー

ACCESSで必要ない文字を消す方法

列の中には「L321111」のようなリース契約番号と「買取」と「(海外)」という文字が記載されています。 例: L321111    買取    (海外)    L231444 上記のL~始まる文字以外を空欄にしたいのですが、買取は消えるのですが(海外)を消すためにはどのように構文に追加すればいいでしょうか? クエリで下記の構文を記載しました 式1:IIf(IsNull([リース契約番号]),Null,Replace([リース契約番号],"買取",""))

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

  • ベストアンサー
回答No.5

質問の意味を激しく誤解していたみたい。。。 各レコードに 1|L321111 2|買取 3|海外) 4|L231444 を 1|L321111 2| 3| 4|L231444 なら 式1:iif(instr(1,[リース契約番号],"L",0)=1 and isnumeric(mid([リース契約番号],2)),[リース契約番号],"") では?

seisei1016
質問者

お礼

ありがとうございます。できました。ほんとうに助かりました。

その他の回答 (4)

回答No.4

例えば、図のようなテーブル[T1]があるとします。それを、図の[選択クエリ]のような結果を得たいということでしょうか? 添付図の選択クエリのSQLは次のようです。 SELECT T1.id, XferSuji([a]) AS 契約番号 FROM T1 WHERE Len(XferSuji([a]))<>0; WHERE 文を省けば、全ての行が表示されます。 先に示したやり方でもOKですが、'L'と言うマジックナンバーをクエリに埋め込むことになります。そういう不味さを取り除くためには、次のように標準モジュールに XferSuji() のような独自関数を追加するしかありません。これですと、多少は汎用性もあり、かつ、データの変更('L'以外も追加)などに耐えうると思います。 Option Compare Database Option Explicit Public Function XferSuji(ByVal strText As Variant) As String   Dim I As Integer ' For Next 用   Dim L As Integer ' 受け取った文字列の文字数   Dim strChar As String ' 一つひとつの文字を格納する変数   Dim strReturn As String ' 戻り値   L = Len(strText & "")   For I = 1 To L     strChar = Mid(strText, I, 1)     If LenB(StrConv(strChar, vbFromUnicode)) = 1 Then       If strChar >= "0" And strChar <= "9" Then         strReturn = strReturn & strChar       End If     Else       strReturn = ""       Exit For     End If   Next I   XferSuji = strReturn End Function

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

とにかく 「L」 で始まるもの以外は空欄にする、ということなら 式1: IIf([リース契約番号] Like 'L*',[リース契約番号],Null)

回答No.2

パターンは大文字の L があって その後には桁数も含めて任意の数字が連なり かつ改行の直前にある ということでしょうか? 私に回答できるかは分かりませんが こんなパターンが有ったりしたら難しそうです。 L321111 ←取る L2240 ←取る (海外)←取らない L231X ←取らない l001 ←取らない LL123←取らない Q1234←取らない L2240 X←取らない(L1234 の後に半角スペース後また文字が) 再注 L2240←取らない 買取 と (海外) だけを消すならReplace関数をネスト(二段階に)すれば・・ と思いますが、そうでもなさそうですね。

seisei1016
質問者

補足

いろいろとありがとうございます。 基本的には、買取と(海外)の文字だけ空欄にして、他の数値が入っているものはすべて表示にしたいのでReplaceでできるかな?と思ったのですが、買取しか消えないので(海外)も消せる方法が解ればと思っています。私の入力方法が悪いのかもしれませんがうまくいきませんでした。

回答No.1

各行の列[リース契約番号]に番号と文字とが混在していて、文字の列のみ””値に変換したいということでしょうか? 仮に、そういうことであれば、添付図を参考にされてください。

seisei1016
質問者

補足

解りにくくてすみません。 列には下記のようにLから始まる数字と買取と(海外)との文字が入力されています。 A列 L13222 L14222 L15132 (海外) 買取 L14335 上記のような感じです。 それをLから始まる数字はそのまま表示させて、買取と(海外)と書かれているとことは空欄に表示したいのですができますでしょうか?

関連するQ&A