[[20230504213502]] 『置換表を使って文字列の置換をしたい』(ほっかぽっか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『置換表を使って文字列の置換をしたい』(ほっかぽっか)

置換前と置換後の文字列が1列づつあるシートがあります。(置換表と呼びます)その行が50行あるとして、大きなスプレッドシート上で、その50通りの置換をしたいです。
Ctrl+Fから検索する文字列と置き換え後の文字列を入れて、すべて置換えボタンを押す行為を50回、人がやらなくても、せっかく置換表があるので50通りの置換をいっきにできないのでしょうか。
VBAは苦手なので、EXCELの標準機能でやれるとうれしいです。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


レイアウトが分からないので具体的な回答はできませんが、SUBSTITUTE関数を使えばいいんじゃないでしょうか。
(フォーキー) 2023/05/04(木) 22:05:51

>VBAは苦手なので、EXCELの標準機能でやれるとうれしいです。
趣旨に沿わない回答で恐縮ですが、
この学校のダウンロードコーナーに、
ユーザー定義関数を用いたファイルがあります。
ご参考まで。

(19) 文字列置換
https://www.excel.studio-kazu.jp/DL/#q19

(参考) 2023/05/04(木) 22:14:53


 > VBAは苦手なので、EXCELの標準機能でやれるとうれしいです。
 このケースではそれに見合う標準機能はありません。

 もっとも、
 ・置換対象の文字列が縦一列に並んでいて、
 ・その横の列に置換後の文字列を書き込む
 などということであれば、
 「データテーブル」機能(昔は単に「テーブル」と言えばこちらだった)を使って、
 文字列変換処理を多数のセルで繰り返すことができます。

 置換処理(VBAで言えば、Replaceメソッド)を置換表の数だけ繰り返すということなので、
 ここはマクロ(という標準的な機能)を使うべきでしょうね。
 置換の結果をさらに置換するので、置換表の設定(指定順序とか)にも注意が必要ではないかと思います。

 なお、(参考)さんの紹介されたものはユーザー定義関数なので、
 「置換」とは違うことに注意が必要です。
 対象シートとは別のシートに、対象セルの数だけユーザー定義関数を埋め込むことになりますので、
 ひと手間かかります。
 (置換表をその都度読み込んでいたりするので、置換対象が多数の場合は余り念頭に置かれていない
 ようですし、なぜReplace関数を使わないのかも少し不思議に思います。)

(xyz) 2023/05/05(金) 10:51:30


すいません、文章ではやりたいことがうまく伝えられず、波紋を生んでいるようなので、具体例を書きました。
これを普通にダイアログでやると、作業シート上でCtrl+Fで"ABC"を"あいう"に置換えし、再びCtrl+Fで"DEF"を"えおか"に置換えし、また再びCtrl+Fで"GHI"を"きくけ"に置換えするといった繰り返し作業をせざるをえませんが、これを自動化する方法を伝授いただきたいです。
置換表は、自動化さえできるのであれば、別シートでも、テキストファイルでも、体裁はいかようにも用意します。

[置換表]
置換前 置換後
ABC あいう
DEF えおか  
GHI きくけ

[作業シート]
A列 B列 C列
No 製品 数量
1 GHI製菓 17  
2 (株)ABC 10
3 DEF食品 26 
4 ABC電機 78
5 GHI商事 20
6 ABC協会 89
7 合同DEF 32

↓置換後は

[作業シート]
A列 B列 C列
No 製品 数量
1 きくけ製菓 17  
2 (株)あいう 10
3 えおか食品 26 
4 あいう電機 78
5 きくけ商事 20
6 あいう協会 89
7 合同えおか 32

(ほっかぽっか) 2023/05/06(土) 06:56:26


 数式で行うのなら作業列を使用した方が楽かな?
対応表がSheet2のA1:B3に有るとして
B2:置換前文字列位置
=MATCH(TRUE,ISNUMBER(FIND(Sheet2!A$1:A$3,A2)),0)
C2:置換前文字列
=INDEX(Sheet2!A$1:A$3,B2)	
D2:置換後文字列
=INDEX(Sheet2!B$1:B$3,B2)	
E2:置換結果
=SUBSTITUTE(A2,C2,D2)
(はてな) 2023/05/06(土) 08:46:37

はてなさん、おかげでできました。
本来は、3回のダイアログ(Ctrl+F)で置換をするのと同じように、作業表そのもののセルを変更したかったのですが、はてなさんの方法だと、置換用に別表or 別列に置換元列をコピーして、そのコピー列の更新後を作って行く感じですね。この方が事後の確認がしやすいのですね。
(ほっかぽっか) 2023/05/06(土) 18:29:42

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.