Accessにてシステムを構築しておりますが、テーブルのデータのReplaceについて悩んでおります。
TableA
〔NO〕 〔型番〕
01 多分ABC
02 DEFGとのこと
03 HIだそうです
04 JKL
05 MNO・
この様なTableAの型番から余分な文字を削除する処理を行いたく、現在は更新クエリにてReplace関数を使用し
行っています。
Replace(Replace(Replace(Replace([型番],"多分",""),"とのこと",""),"だそうです゜",""),"・","")
↓
TableA
〔NO〕 〔型番〕
01 ABC
02 DEFG
03 HI
04 JKL
05 MNO
この「余分な文字」は現在100以上あり、今後もどんどん増えていきます。
クエリでのReplaceは見にくくメンテナンスもしづらいです。
「余分な文字」をまとめたテーブルでも作成しそれを使ってうまい事出来ないか考えていますが
アイデアが浮かびません(;_;)。
皆様のお知恵をお貸しくださいませm(_ _)m
No.2ベストアンサー
- 回答日時:
> 「余分な文字」をまとめたテーブルでも作成しそれを使ってうまい事出来ないか
そのテーブルを作れば、クエリで一発で対応できます。
(こちらの環境で動作確認済み:WinXP Home&Excel2003)
【テーブル】
「TableA」テーブル:
フィールド = No(テキスト型・主キー), 型番(テキスト型)
「削除リスト」テーブル:
フィールド = 削除文字(テキスト型・主キー)
【クエリ】
SQL文:
UPDATE TableA, 削除リスト SET TableA.型番 = Replace([型番],[削除文字],"");
添付画像は、左から
更新クエリ適用前のテーブルのデータ(予め複製)
更新クエリ適用後のテーブルのデータ
上記SQL文をクエリのデザインビューで表示したもの
です。
『削除リスト』に登録された文字パターンを複数持っている場合も含めて、問題なく
削除されることを確認しました(→No=06)。
※2つのテーブル間にフィールドの結合がない選択クエリを作成すると、そのレコードは
双方のテーブル件数の乗算となります(一方のテーブルが5件、他方が6件なら、
選択クエリは5*6=30件を表示)。
これと同じで、上記クエリを実行すると、「○○件のレコードが更新されます」の
確認メッセージでは、テーブルの実レコード数より大きくなりますのでご注意下さい。
No.1
- 回答日時:
実行頻度は多くなさそう&クエリでなくてもよさそう ということでVBAにて
(標準モジュールに記述します)
tableB の削除文字フィールドに削除する文字列が格納されているとします。
tableB の例
削除文字
多分
とのこと
だそうです
・
型番、削除文字は NULL データがないとした上での記述例:ADO使用)
Public Function myRep()
Dim rsA As New ADODB.Recordset
Dim rsB As New ADODB.Recordset
Dim sTmp As String
rsA.Open "tableA", CurrentProject.Connection, adOpenForwardOnly, adLockPessimistic
rsB.Open "tableB", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
If (Not rsB.EOF) Then
While (Not rsA.EOF)
sTmp = rsA("型番")
rsB.MoveFirst
While (Not rsB.EOF)
sTmp = Replace(sTmp, rsB("削除文字"), "")
rsB.MoveNext
Wend
rsA("型番") = sTmp
rsA.Update
rsA.MoveNext
Wend
End If
rsA.Close
rsB.Close
End Function
削除文字を登録するのは面倒だと思います。
アルファベット A ~ Z だけを残すのであれば、以下例
Public Function myRep2(sQ As Variant) As String
Dim sRet As String
Dim sTmp As String
Dim i As Long
sRet = ""
If (Not IsNull(sQ)) Then
For i = 1 To Len(sQ)
sTmp = Mid(sQ, i, 1)
If (sTmp Like "[A-Z]") Then sRet = sRet & sTmp
Next
End If
myRep2 = sRet
End Function
呼び方例
Private Sub Sample1()
MsgBox myRep2("AB漢字CDEありFG-22a2bc")
End Sub
の結果は、"ABCDEFGabc" となります。
更新クエリで使う時には
UPDATE tableA SET tableA.型番 = myRep2([型番]);
とか、
質問に目をとめてくださり感謝いたします。
大変参考になりました。
ご丁寧にコーディングしてくださり本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのクエリで、replace関数を使い、データの中にある”をブランクに置き換えたいのですが 6 2022/06/15 14:54
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) 空白を全て削除したい 2 2023/05/13 21:36
- Excel(エクセル) Excelの社員名簿 6 2023/07/10 16:35
- Excel(エクセル) エクセル 関数 指定の繰り返しの回数 以降(以前)を削除するには、 2 2022/04/24 10:29
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
土曜の昼、学校帰りの昼メシの思い出
週休2日が当たり前の今では懐かしい思い出ですが、昔は土曜日も午前中まで学校や会社がある「半ドン」で、いつもよりちょっと早く家に帰って食べる昼ご飯が、なんだかちょっと特別に感じたものです。
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
とっておきの「まかない飯」を教えて下さい!
飲食店で働く方だけが食べられる、とっておきの「まかない飯」。 働いてらっしゃる方がSNSなどにアップしているのを見ると、表のメニューには出てこない秘密感もあって、「食べたい!!」と毎回思ってしまいます。
-
Access_フィールドの文字列に日本語があるかを識別
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
時間の足し算
-
Accessでテーブルにパスワード...
-
Access2003を使って、複数台あ...
-
Access_2002 Replace方法
-
access テーブル内のレコード...
-
access97のリンクテーブルに...
-
ACCESSで指定されたテーブルか...
-
ツリー構造をRDBで表現するには?
-
ACCESSに同時アクセス(編集)を...
-
フォームの計算がテーブルに反...
-
Accessレコードの追加や変更が...
-
Accessでテーブルをデータシー...
-
Accessでテーブルからテーブル...
-
DAOのTableDefs("TblName").Con...
-
2つのテーブルを比較して一致し...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
テーブルの存在チェックについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessでvlookupみたいなことは...
-
Accessクエリでの、LIKE条件
-
Accessレコードの追加や変更が...
-
3つの表を1つに縦に連結する
-
ACCESSに同時アクセス(編集)を...
-
Accessの追加クエリで既存のテ...
-
デザインビューで、連結式 を...
-
2つのテーブルを比較して一致し...
-
Accessでテーブルからテーブル...
-
テーブル作成クエリで主キーを設定
-
SQLで条件指定結合をしたいがNU...
-
ACCESSで指定されたテーブルか...
-
access テーブル内のレコード...
-
AccessでのNULLのレコードの表...
-
INSERT時にデータ登録とmaxの発...
-
ODBCで接続するとDBに変更/追加...
-
時間の足し算
-
ツリー構造をRDBで表現するには?
-
2つのテーブルAとBをマージ...
おすすめ情報