テーブルにある文字列の一部を違う言葉に置き換えたいのですが・・・
同じテーブルに置き換えるか、別テーブルを作るかできればよいのですが。
全てのデータに入っているフィールドと、入っていないフィールドがあります。
できればVBAなどは使わずにできないものでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

 Accessには、「編集メニュー」に「置換」というものがあります。


 これを使うと、任意のフィールド内の任意の文字列を別の文字列に置換できます。
 ポイントとしては、置換するフィールドクリックしてから、メニュー操作を行ないます。置換のダイアログでは、検索条件として「フィールドの一部分」「フィールド全体」「フィールドの先頭」を選べます。
 ご質問では、Accessのバージョンも書かれていないので、詳しい条件などは、ヘルプをご覧ください。
    • good
    • 0

SQL文でできそうに思います。



もう少し詳しく記入してみてください。

(どんな文字列を何に置き換えるか、長さ、位置は同一なのか)
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q日本語→中国語の複数単語の一括置換(エクセル)

エクセルのマクロを活用して下記のことを考えています。
エクセルで複数単語の一括置換は過去の質問でありまして活用できそうだったのですが、置換後の文字が中国語だとマクロに中国語を記載すると文字化け(?マーク)になり、エラーが出ます。
日本語→中国語の複数単語の一括置換(エクセル)ができる方法はないのでしょうか?
やりたいことは、簡単に以下のようなことです。
エクセル全てのシートが対象で、事前に下記の置換内容を準備します。
そして一括置換がエクセル内でしたいです。
China1→中国語1
China2→中国語2
China3→中国語3
China4→中国語4
宜しくお願い致します。

Aベストアンサー

VBAコードに中国文字は入らないようですが、
Excelのセルになら中国文字が入ります。
(形式を選択して貼り付け → Unicodeテキスト)

なので、置き換えがセル単位であれば、ですが
日本語/中国語の対応表を置き換え対象のブックとは別のブックに持てば
VBAでも処理できます。

文字列の一部分を置き換えるのには使えませんが。  (^^;

Qテーブルの一部を別のテーブルを使って更新したい

テーブルA…[住所]、[氏名]、[電話番号]、[携帯番号]、[変更日]
テーブルB…[氏名]、[自宅電話・携帯番号]、[変更日]

Bの[氏名]と[自宅電話・携帯番号]が、Aの[氏名]と[電話番号]、[携帯番号]に一致した場合、Aの[変更日]がBの[変更日]に更新されるようにしたいです。

以前、似たような質問で回答して頂いたのですが、条件が二つになり指定方法が上手くいかなくなってしまいました。

お手数お掛けしますが回答宜しくお願いします。

Aベストアンサー

UPDATE TBL_B
INNER JOIN TBL_A
ON ((TBL_B.自宅電話・携帯番号=TBL_A.携帯番号) Or (TBL_B.自宅電話・携帯番号=TBL_A.電話番号))
AND (TBL_B.氏名=TBL_A.氏名)
SET TBL_B.変更日 = TBL_A.変更日;

こんな感じかな?SQLビューでしか編集できません。
一応検証はしましたが自信が無いので、
バックアップを取って実行し、検証もしつこい位に行ってください。
当方Access2002

Qエクセルの複数同時置換

エクセルで文字列を同時に複数置換することって出来ますか?

たとえば、ABCという文字列があった場合、

A→1
C→2

の置換を同時にやりたいんです。

ABC→1B2 に一度に置換する方法はありますか?
よろしくお願いします。

Aベストアンサー

マクロでしか出来ないと思います。
一応、標準モジュールに貼り付けることを想定していますが、どこでも構いません。フォームボタンなどに登録すると、簡単に使えるようになると思います。

Sub MultiReplacement()
 Dim MyWords As Variant
 Dim MyRepWords As Variant
 Dim Ans As Integer
 Dim Rng As Range
 MyWords = Array("A", "C") 'ここに検索語を入れてください。
 MyRepWords = Array(1, 2) 'ここに置換語を入れてください。
 '検索語と置換語を調べる
 If UBound(MyWords) <> UBound(MyRepWords) Then
  MsgBox "検索語数( " & UBound(MyWords) & _
  " )と置換語数( " & UBound(MyRepWords) & " )数が違います。", 64
  Exit Sub
 End If
 
 Set Rng = Selection 'マウスで範囲を選択してください。
 If Rng.Count = 1 Then
  Ans = MsgBox("セル1つしか選択されていませんが、よろしいですか?", vbYesNo)
  If Ans = vbNo Then
   Exit Sub
  End If
 End If
 '実行
 For i = LBound(MyWords) To UBound(MyWords)
  Cells.Replace What:=MyWords(i), Replacement:=MyRepWords(i), _
  LookAt:=xlPart, _
  MatchCase:=True
 Next i
End Sub

マクロでしか出来ないと思います。
一応、標準モジュールに貼り付けることを想定していますが、どこでも構いません。フォームボタンなどに登録すると、簡単に使えるようになると思います。

Sub MultiReplacement()
 Dim MyWords As Variant
 Dim MyRepWords As Variant
 Dim Ans As Integer
 Dim Rng As Range
 MyWords = Array("A", "C") 'ここに検索語を入れてください。
 MyRepWords = Array(1, 2) 'ここに置換語を入れてください。
 '検索語と置換語を調べる
 If UBound(MyWords) <> UBo...続きを読む

Q一つのテーブルの全てのフィールドを一気に半角にする方法

テーブル1に
フィールド1、フィールド2、フィールド3・・・と多数のフィールドがあり、
全ての全角文字を半角にしたいのですが
更新クエリで

UPDATE テーブル1 SET テーブル1.フィールド1 = StrConv([テーブル1]![フィールド1],8);
UPDATE テーブル2 SET テーブル2.フィールド2 = StrConv([テーブル2]![フィールド2],8);

とフィールドつづやってくしかないですかね?

もっと効率のいい方法があれば教えてください!
よろしくお願い致します。

Aベストアンサー

SET には複数の式をカンマで区切って記述できます。
なので
update テーブル1
set
テーブル1.フィールド1 = StrConv([テーブル1]![フィールド1],8),
テーブル1.フィールド2 = StrConv([テーブル1]![フィールド2],8),
テーブル1.フィールド3 = StrConv([テーブル1]![フィールド3],8)
;
です。
(結局、全フィールド記述ですね)

Qエクセルで複数ファイルのセルの数式を一部置換

同じフォルダ内にある複数のエクセルファイルを1セルの一部分の数式を一括で置換したいのですが・・・
例えば =int(sum(a1:a10))→=int(average(a1:a10))
sumをaverageに置換可能なのでしょうか?
ファイルが大量にあるため全部のファイルをまとめて置き換えが出来ればと思いまして!よろしくお願いします。

Aベストアンサー

次のマクロを実行すると、ご希望の置換え状態になるかと思います。
宜しかったら、新規ブックでテストしてみてください。

一応、ご存知とは思いますが、操作手順を詳しく書いておきます。

1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
3.モジュールウィンドウに下記コードをコピーして貼り付けます。
4. コードの 3~5 行目の「設定事項」を実情に合わせて変更します。
 (今は、例えばの =int(sum(a1:a10))→=int(average(a1:a10))にしています。)
5.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
6.もし、保存して何回か使用するときは、メニューから[ツール]-->[マクロ]-->
 [セキュリティ]で「セキュリティレベル」を「中」にして[OK]します。
7.実行するときは、Alt + F8 (メニューから[ツール]-->[マクロ]-->[マクロ])で
 「フォルダ内全ブック全シート計算式置換え」を指定し、[実行]ボタンを押します。

これで、フォルダ内の全ブックの計算式が指定したものに全部置換えになると思います。

・ 検索対象ブックのシート内で、他ブックのセル参照が設定されている場合は、
  その旨のダイアログボックスが表示されます。(手動で対応)

・ ブックやシートが保護によって書き換えられない状態が、無いものとします。

・ 検索を終了すると、検索対象ブック数と、置換え総件数が表示されます。


Sub フォルダ内全ブック全シート計算式置換え()
'--- 設定事項 -----------------
Const Mypath = "C:\DATA\" '             <--- 検索フォルダ名を指定
Const OldStr = "=INT(SUM(A1:A10))" '       <--- 置換え旧計算式(部分可)
Const NewStr = "=INT(AVERAGE(A1:A10))" '   <--- 置換え新計算式(部分可)
'-----------------------------
Dim WB As Workbook
Dim Rng As Range
Dim FName As String
Dim Bcnt As Integer
Dim Dcnt As Integer
Dim Scnt As Integer
Dim N As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
FName = Dir(Mypath & "*.xls", vbNormal)
Do While FName <> ""
  Set WB = Workbooks.Open(Mypath & FName)
  Bcnt = Bcnt + 1
  Scnt = 0
  Windows(WB.Name).Visible = False
  For N = 1 To WB.Worksheets.Count
    Set Rng = WB.Worksheets(N).Cells.Find(OldStr)
    If Not Rng Is Nothing Then
      Scnt = Scnt + 1
      Do
        Rng.Formula = Replace(Rng.Formula, OldStr, NewStr)
        Dcnt = Dcnt + 1
        Set Rng = WB.Worksheets(N).Cells.FindNext(Rng)
      Loop Until Rng Is Nothing
    End If
  Next N
  If Scnt = 0 Then
    WB.Close SaveChanges:=False
  Else
    Windows(WB.Name).Visible = True
    WB.Close SaveChanges:=True
  End If
  FName = Dir
  If FName = ThisWorkbook.FullName Then FName = Dir
Loop
Application.DisplayAlerts = True
Application.ScreenUpdating = True
If Bcnt = 0 Then
  MsgBox "指定したフォルダに、ブックは見つかりませんでした。", , "検索完了"
Else
  MsgBox Bcnt & " のブックを検索し " & Dcnt & " 箇所を置換えました。", , "置換え完了"
End If
Set WB = Nothing
Set Rng = Nothing
End Sub

次のマクロを実行すると、ご希望の置換え状態になるかと思います。
宜しかったら、新規ブックでテストしてみてください。

一応、ご存知とは思いますが、操作手順を詳しく書いておきます。

1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
3.モジュールウィンドウに下記コードをコピーして貼り付けます。
4. コードの 3~5 行目の「設定事項」を実情に合わせて変更します。
 (今は、例えばの =int(sum(a1:a10))→=int(a...続きを読む

QAccess]2つのテーブルを比較してフィールドの一部が一致したデータを抽出

2つの名簿テーブルを比較してどちらのテーブルにも含まれている個人を抽出したいと考えております。

テーブル名とフィールドは以下のとおりです。

====================
テーブル名「名簿A」

氏名
電話番号
住所
メールアドレス
====================
テーブル名「名簿B」



電話番号
住所
メールアドレス
====================

たとえば、この2つの名簿をメールアドレスで一致したものを抽出する場合は選択クエリのデザインビューで「名簿A」のフィールドを読み込ませ、
メールアドレスフィールドの抽出条件として

Like [名簿B].[メールアドレス]

を入れれば抽出ができたのですが、メールアドレスは、名簿ごとに記入されていたりしなかったりするので、名前での一致を行いたいと思っています。

ここで問題なのが、名簿Aは「氏名」で入力されているのに対し、名簿Bでは「姓」と「名」が別フィールドになっております。

そこで自分なりにやってみたのが、選択クエリのデザインビューで「氏名」のフィールドの抽出条件として

Like (*[名簿B].[姓]*)

を設定するものでした。
これがうまくいけば最終的には

Like (*[名簿B].[姓]*) And Like (*[名簿B].[名]*)

という風にして、名簿Aの「氏名」フィールドに名簿Bの「姓」も「名」も入っているものを抽出できるかな?と考えたのですが、上記のように入力すると、自動的に

Like ("*[名簿B].[姓]*")

となってしまい、何も抽出されなくなってしまいました。

このような方法では希望する抽出は行えないのでしょうか?

お分かりのかた、よろしくお願いいたします。

2つの名簿テーブルを比較してどちらのテーブルにも含まれている個人を抽出したいと考えております。

テーブル名とフィールドは以下のとおりです。

====================
テーブル名「名簿A」

氏名
電話番号
住所
メールアドレス
====================
テーブル名「名簿B」



電話番号
住所
メールアドレス
====================

たとえば、この2つの名簿をメールアドレスで一致したものを抽出する場合は選択クエリのデザインビューで「名簿A」のフィールドを読み込ませ、
メール...続きを読む

Aベストアンサー

> 名簿Aの「氏名」欄には姓と名の間にスペースが入っているものがあり

[名簿B].[姓] & [名簿B].[名]を使った時のクエリで考えてみます。

クエリをSQLビューで表示した時、抽出条件のところは

[名簿A].[名前] Like [名簿B].[姓] & [名簿B].[名]
とか
[名簿A].[名前] = [名簿B].[姓] & [名簿B].[名]

になっていると思います。

[名簿A].[名前]の部分に細工して、Replace([名簿A].[名前]," ","")に書き換えます。
(Replace で空白を削除してあげます)

それをもとに
Replace([名簿A].[名前]," ","") = [名簿B].[姓] & [名簿B].[名]
としてみるとどうなりますか。


※バージョンによっては、クエリ内で Replace が使えないものがあったかと思います。
その時には、補足なりに記述してください。
(対処方法はあります)

Qエクセルで複数語句の一括置換がしたい。

1つのシートの複数のセルの中に文章が記入してあり、その中の文字を
一括で置換したいのです。
AAAA → BBBB
1234 → 5678
○×△□ → ●×▲■
このように変更したい文字が数百とあります。

また、置換前の語句(セルA1~)と置換後の語句(セルB1~)というように
エクセルの別のファイルに並べております。

どのようにすれば出来るのかお教え頂けませんでしょうか?
もしマクロなどで出来るとしたら、初心者ですので細かいやり方などお教え頂けたらありがたいと思っております。

よろしくお願いいたします。

Aベストアンサー

http://2020hindsight.cocolog-nifty.com/blog/2009/01/excel-b76d.html

にあるようなもので、できますね。
1つの文章内に複数の置換対象に対応してます。

Q別のテーブルから別のテーブルへデータを保存する方法

Access2002です。
二つのコンボボックス、大・小でそれぞれ絞り込みを行なうようにしています。
大で絞り込んだ結果が小に反映されるのですが、追加で新しい項目も登録させたいです。
その際に、次に絞り込みを行なうときに新規で小に追加された項目が、大を選んだ後にきちんと表示されるようにしたいのですが、その処理をどうすればいいのか分かりません。

それぞれ番号を振ってあるので、小に新規登録するときに、その時点で選択されている大の番号を自動で取得し、小のテーブルに入れられればと思っています。

大テーブル
・大項目コード(オートナンバー型)
・大項目(テキスト型)

小テーブル
・小項目コード(オートナンバー型)
・小項目(テキスト型)
・大項目コード(数値型:ここに大テーブルの「大項目コード」を入れたい)

テーブルは上記のようになっています。
絞り込みは下記のように、大・小ふたつ分記載してあります(名前以外は同じです)


Private Sub コンボ大_NotInList(NewData As String, Response As Integer)

Dim strmsg As String
strmsg = "登録されていない語句です。保存しますか?"

If 1 <> MsgBox(strmsg, 1) Then
Response = acDataErrContinue
Me.コンボ大.Undo
Else
DoCmd.SetWarnings False
DoCmd.OpenQuery "追加クエリ"
Response = acDataErrAdded
DoCmd.SetWarnings True

MsgBox "登録しました。"
End If

End Sub

追加クエリはフィールドに『式1: Forms!入力フォーム!コンボ.text』、レコードの追加には『大項目』としています。小も同様です。
現在は別のテキストボックスに大の『大項目コード』を表示させ、そこから小のテーブルに入れられないかと思ってます。テキストボックスに表示させるのは出来ました。
その値を、小に新規で項目を登録する際に、一緒に小テーブルに入れられればと思っていますが、実際にどうすればいいのか、、ネットや本で調べてみましたがさっぱり分かりません。
望む結果になれば方法は問わないので、お知恵を拝借できればと思います。
分かりづらい文章かもしれませんが、よろしくお願いします。

Access2002です。
二つのコンボボックス、大・小でそれぞれ絞り込みを行なうようにしています。
大で絞り込んだ結果が小に反映されるのですが、追加で新しい項目も登録させたいです。
その際に、次に絞り込みを行なうときに新規で小に追加された項目が、大を選んだ後にきちんと表示されるようにしたいのですが、その処理をどうすればいいのか分かりません。

それぞれ番号を振ってあるので、小に新規登録するときに、その時点で選択されている大の番号を自動で取得し、小のテーブルに入れられればと思ってい...続きを読む

Aベストアンサー

> 追加クエリはフィールドに『式1: Forms!入力フォーム!コンボ.text』、
> レコードの追加には『大項目』としています。小も同様です。

でしたら、『小テーブル』用の追加クエリに、もうひとつ列(フィールド)を追加すれば、
コードの方は特に触らなくても対応できるかと思います。


そのクエリをデザインビューで開いたら、以下のように「式2」の列を追加します:

   フィールド: 式1: (下記参照) 式2: (下記参照)
    テーブル:
    並べ替え:
レコードの追加: 小項目      大項目コード

・「式1:」の式部分:
  Forms!入力フォーム!コンボ小.Text
・「式2」の式部分:
  Forms!入力フォーム!大コード
  (大項目コードを表示させたテキストボックスの名前が「大コード」の場合)


・・・以上です。


要するに、

> 新規で項目を登録する際に、一緒に小テーブルに入れられればと思っています

という場合は、上記のように、必要なフィールド群を順次横に並べてやればOKだと
いうことです。

・・・質問の趣旨を誤解していたらすみません(汗)

> 追加クエリはフィールドに『式1: Forms!入力フォーム!コンボ.text』、
> レコードの追加には『大項目』としています。小も同様です。

でしたら、『小テーブル』用の追加クエリに、もうひとつ列(フィールド)を追加すれば、
コードの方は特に触らなくても対応できるかと思います。


そのクエリをデザインビューで開いたら、以下のように「式2」の列を追加します:

   フィールド: 式1: (下記参照) 式2: (下記参照)
    テーブル:
    並べ替え:
レコードの追加: 小項目     ...続きを読む

Q【エクセル】検索と置換で複数の数式の、範囲を変える

タイトルの件、質問いたします。

下記の2つの数式があります。2つの数式のセルの範囲を
→検索と置換を使い、【A3:A14】に変更する事はできますか??
→検索と置換機能ではなくても、OKです。現在は、手入力で全て変更しています。

●C15セル=SUM(C3:C14)
●D15セル=SUM(D3:D14)

ご存知の方、いらっしゃいましたら、宜しくお願いします。」

【エクセルバージョン】
2003
2007

Aベストアンサー

方法1:ご質問の直接の回答
目的の2つのセルC15:D15を選択する
Ctrl+Hで置換を開き
(*)

(A3:A14)
に全て置換のボタンをクリックする


方法2:最も一般的な方法
C15を選択し,
=SUM($A$3:$A$14)
もしくは
=SUM($A3:$A14)
と記入してEnterし,C15をコピーしてD15に貼り付ける


方法3:少しマニアな方法
C15:D15を選択しておき,
=SUM($A$3:$A$14)
もしくは
=SUM($A3:$A14)
と記入し,コントロールキーを押しながらEnterで入力する



方法4:かなりマニアな方法
A3:A14を選択し,名前ボックス(数式バーの左端,通常A1のように表示が出ているボックス)に
対象範囲
と記入してEnterし,範囲に名前を定義する
もしくは挿入メニュー(数式タブ)の名前の定義で名前を定義しておき,
C15:D15に前述方法1~3どれを使っても構わないので
=SUM(対象範囲)
という数式を記入する

Q別のテーブルのフィールドを抽出項目にするには?

別のテーブルのフィールドを抽出項目にするには?

Access初心者です。
申し訳ありませんが、急ぎ回答いただきたく思います。
どうか宜しくお願いいたします。

お伺いしたい内容は、

データが多く、抽出条件も多いので、
別のテーブルのフィールドに入っている単語を使い、
抽出したい元データのレコードをあいまい検索して非表示にしたいです。

データの内容は下記になります。

---------------------------------------
元データ(テーブル1とテーブル2から結合したクエリ(名前は元データ)
フィールド1 フィールド2
ID-1     りんご
ID-2     バナナ
・       ・
・       ・
・       ・
ID-2000    チェリー
---------------------------------------
---------------------------------------

除外リスト(テーブル3。名前は除外リスト)
フィールド1
りんご
チェリー



---------------------------------------

元データのフィールド2に
Not Like "*りんご*" And Not Like "*チェリー*"
と記述すれば、フィールド2にりんご、チェリーを含むレコード以外のものが表示され、
欲しい情報が手に入るのですが、(上記例だとバナナのみ表示される)
実際にはりんご、チェリーなどあいまい検索し、非表示にしたいキーワードが100個あります。

なので、除外リストというテーブルをつくり、
そのフィールド内に書かれたキーワードを使い
Not Like "*りんご*" And Not Like "*チェリー*"
と同じような表示結果になるようにしたいのですが、
やり方が調べてもどうしてもわかりません。

どうか皆様のお力を貸してください。
宜しくお願いいたします。

別のテーブルのフィールドを抽出項目にするには?

Access初心者です。
申し訳ありませんが、急ぎ回答いただきたく思います。
どうか宜しくお願いいたします。

お伺いしたい内容は、

データが多く、抽出条件も多いので、
別のテーブルのフィールドに入っている単語を使い、
抽出したい元データのレコードをあいまい検索して非表示にしたいです。

データの内容は下記になります。

---------------------------------------
元データ(テーブル1とテーブル2から結合したクエリ(名前は元データ)
フィールド1 ...続きを読む

Aベストアンサー

以下でどうなるでしょうか。

元データのクエリの名前を「元データ」とします。
除外リストは、そのまま「除外リスト」名とします。

SELECT * FROM 元データ
WHERE NOT EXISTS (
SELECT 1 FROM 除外リスト
WHERE 元データ.フィールド2 LIKE "*" & 除外リスト.フィールド1 & "*"
)
;


曖昧で一致するもの、が無ければ…、と考えてみましたが。

(修理性能はわかりません)


人気Q&Aランキング