![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
セルA列に1000個のワードがあり、この中から変換して置き換えたい文字が100個ある場合に、
SUBSTITUTEで数式を組み立てているのですが、
ネストが64までということで、シート1に“変換前の文字”と“変換後の文字”を64個、
シート2に同様に36個用意して、セルA列を対象にそれぞれ変換していき、
シート1で変換できた文字と、シート2とで変換できた文字を抜粋して、
シート3で合わせて1000個のワードを変換完了、とするしか方法はありませんか?
簡潔に言いますと、1000個のワードに対して、100個の異なる文字の置換が
一度にできる関数の組み立て方があれば知りたいです。
A 回答 (6件)
- 最新から表示
- 回答順に表示
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_03.png?08b1c8b)
No.5
- 回答日時:
No付きの変換テーブルを用意していただく前提で、
sumproductで一致したNo返して、そのNoでvlookupして、変換というのはどうでしょうか。
ご要望通りかわかりませんがお試しください。
=IFERROR(VLOOKUP(SUMPRODUCT((A3=$E$3:$E$7)*$D$3:$D$7),$D$3:$F$7,3,FALSE),A3)
![「ExcelのSUBSTITUTE関数につ」の回答画像5](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/2/542934929_5dc6775dd9986/M.png)
No.4
- 回答日時:
ユーザー定義関数(ReplaceD)を作ってみました。
普通のシート関数のように「=ReplaceD(A1)」のような使い方になります。
一度変換テーブルシートを配列に読み込んで使用していますので少しは早くなっていると思います。
インストール方法
① 変換したいデータが有るブックにシートを追加してシート名を「変換テーブル」に変更する。
② 追加したシートのA列に「変換前の文字」B列に「変換後の文字」を列挙します。
③「Public Const Str_戻シート名 As String = "Sheet1"」の「Sheet1」を実際に存在するシート名に変更して下さい(変換したいデータが有るシート名にした方が便利です)
④ 点線以下のコードを図のそれぞれの赤枠で囲んだところをダブルクリックしたところに書き込みます。
⑤ マクロ有効ブック(○○○○.xlsm)で保存して閉じます。
⑥ 次回マクロを有効にして開くと「ReplaceD」が使えるようになっています。
-------------------------------------------------------------------------------------------------------------
☆「変換テーブル」へ
Private Sub Worksheet_Deactivate()
Call シート⇒配列
End Sub
-------------------------------------------------------------------------------------------------------------
☆「ThisWorkbook」へ
Private Sub Workbook_Open()
Sheets(Str_変換シート名).Select
Sheets(Str_戻シート名).Select
End Sub
-------------------------------------------------------------------------------------------------------------
☆「Module1」へ
Public Const Str_戻シート名 As String = "Sheet1"
Public Const Str_変換シート名 As String = "変換テーブル"
Public Var_変換テーブル As Variant
Public Lng_登録終 As Long
Sub シート⇒配列()
Application.EnableEvents = False
Sheets(Str_変換シート名).Select
Lng_登録終 = Cells(Rows.Count, 1).End(xlUp).Row
Var_変換テーブル = Range(Cells(1, 1), Cells(Lng_登録終, 2))
Sheets(Str_戻シート名).Select
Application.EnableEvents = True
End Sub
Function ReplaceD(文字列 As String) As String
Dim Lng_位置 As Long
ReplaceD = 文字列
For Lng_位置 = 1 To Lng_登録終
ReplaceD = Replace(ReplaceD, Var_変換テーブル(Lng_位置, 1), Var_変換テーブル(Lng_位置, 2))
Next
End Function
-------------------------------------------------------------------------------------------------------------
![「ExcelのSUBSTITUTE関数につ」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/6/542332295_5dc3142b73d9b/M.png)
No.3
- 回答日時:
こんにちは
>関数の組み立て方があれば知りたいです。
エクセルに組込みの関数では難しそうなので、ユーザー定義関数にしてみました。
準備として、VBAの標準モジュールに下記の関数をコピペしておきます。
そのうえで、置き換えた結果を表示したいセルに
=exchange(元の文字列、置換文字列一覧表)
のようにして使います。
添付の例では、仮に、A列に元となる文字列が並んでおり、D1:E6の範囲が置換する文字列の一覧としています。
一覧は、D列の文字が存在すれば、E列の文字に置換するという意味の表になります。
結果を示したいB列には、B1セルに
=exchange(A1,D$1:E$6)
の関数式を入力して、下方にフィルコピーしてあります。
標準モジュールに記入したユーザー定義関数は、以下の通りです。
Function exchange(ByVal s As String, ByRef r As Range) As String
Dim i As Long
exchange = s
If r.Columns.Count < 2 Then Exit Function
For i = 1 To r.Rows.Count
exchange = Replace(exchange, r.Cells(i, 1), r.Cells(i, 2))
Next i
End Function
![「ExcelのSUBSTITUTE関数につ」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/0/587726_5dc0c00006680/M.jpg)
No.2
- 回答日時:
こんばんは!
VBAでの一例です。
文章だけではどのような配置になっているのか判らないので、
Sheet1のA列に元の文言が羅列してあるとします。
そしてSheet2のA列1行目から検索する文字列・B1セル以降に置換後の文字列の表を作成しておきます。
操作する前に一手間掛けます。
Sheet2のC1セルに
=LEN(A1)
という数式を入れフィルハンドルでダブルクリック!
そしてA1~C列最終行までを範囲指定し、C列をキーに降順で並び替えをしておきます。
(1行目から順に置換しますので、文字数の多い順に置換をしないとお望みの結果にならないと思います)
その下準備ができた上で
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() '//この行から//
Dim i As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row
Worksheets("Sheet1").Range("A:A").Replace what:=wS.Cells(i, "A"), replacement:=wS.Cells(i, "B"), lookat:=xlPart
Next i
End Sub '//この行まで//
※ 一旦マクロを実行すると元に戻せませんので
Sheet1のA列は別の列にコピー&ペーストしておいてマクロを試してみてください。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Word(ワード) ワードで,特定の文字だけ,字体を一括変換する方法は? 1 2023/04/26 10:11
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
【Excel関数】特定の文字を別表のリストの文字に変換したい
Excel(エクセル)
-
Excelの複数置換はSUBSTITUTEを重ねるしかない?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで作成した出欠表から日付...
-
勤務外時間を出す表が作りたい
-
エクセルの数式について教えて...
-
【マクロ】参照渡しとモジュー...
-
【マクロ】参照渡しについて。...
-
マクロを実行すると、セル範囲...
-
【マクロ】シート追加時に同じ...
-
Excelの条件付書式について教え...
-
Excelでの文字入力について
-
エクセルの設定、特定の列以降...
-
【マクロ】Call関数で呼び出し...
-
Excel 偶数月の15日(土日祝...
-
Excelのデーターバーについて
-
別のシートの指定列の最終行を...
-
システムファイルについて
-
スプレッドシートでの数値集計
-
Excel関数の解決方法
-
Excelの関数を教えて下さい。
-
エクセルの設定、下へスクロー...
-
エクセルの数式について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】重複する同じ行を、...
-
Excelの条件付き書式のコピーと...
-
vba 印刷設定でのカラー印刷と...
-
VBA の単語の意味を教えて下さい。
-
Excel 日付の表示が直せません...
-
エクセル 同じ行の隣り合う数字...
-
エクセル条件付き書式について。
-
エクセルの数式につきまして
-
ファイル名の変更
-
エクセル 数字のみ抽出につて
-
Excelの開始ブックを固定したい...
-
エクセルの数式について教えて...
-
エクセルのセルをクリックする...
-
=INDIRECT(RIGHT(CELL("filenam...
-
エクスプローラーで見ることは...
-
Excelの関数で質問です
-
至急お願いいたします 屋上の備...
-
エクセルでセルに入力する前は...
-
関数を教えて下さい
-
Excel 関数での質問です
おすすめ情報