• ベストアンサー

エクセルで文字の置き換え(自動)

エクセルでリストを作成しています。 リストは常に追加をしている状態です。 そこで、Aのシートを入力用とし、Bのシートを印刷用としたいです。 そこでやりたいことですが Aのシートに入力された文字列をBのシートの文字列で自動的に変換させたいです。ルールは以下の通り R→右 L→左 S→直 D→割1 E→割2 F→割3 これが数字と文字の組み合わせでAシートのA列に入力されます 例1R1L2S3→1右1左2直3のようにしたいです 置き換えをしてもいいと思いますが、リストが随時追加されますので、出来れば自動でできればと思います。 まだ、自分ではVBAやマクロは組めません。関数などでできる方法があれば教えてください

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

SUBSTITUTEなどで置き換えることは出来ますが、 R,L,S・・が日々増えるらしいので式を素の都度増やさないといけないので面倒。 例データ A2:B7 R 右 L 左 S 直 D 割1 E 割2 F 割3 A10にRS =VLOOKUP(MID(A10,1,1),$A$2:$B$10,2,0)&VLOOKUP(MID(A10,2,1),$A$2:$B$10,2,0) で 結果 右直 しかし文字列の長さが不定だと式が長くなる。 ーーー 結局 VBAを使わないと難しいのでは。 意味はわからないが鵜呑みで使うか、拒否反応を示すか。 ユーザー関数(一種のVBA利用)を定義する シートのメニューで ツールーマクローVBE を選択 その出てきた画面で 挿入ー標準モジュール を指定 白紙の画面部分に 下記コードをコピペ。 Function rep1(a) Application.Volatile True d = Range("A100").End(xlUp).Row s = "" For i = 1 To Len(a) x = Mid(a, i, 1) r = Range("A2:A" & d).Find(what:=x).Row s = s & Range("B" & r) Next i rep1 = s End Function ーーーーー A2:B7のは上例VLOOKUPで説明箇所のデータがあるとします(Rなど全角英字の例) シートで C列C2以下に C列   D列(関数を入れた結果) RSD 右直割1 LDE 左割1割2 RF 右割3 SEF 直割2割3 D2には =rep1(C2) と式を入れて下方向に式を複写。 結果は上記D列。 RL・・・は増えても第100行目までなら、上記コードでOK。 もし使うなら、自分の場合、上記コードをどう変えたらよいか(列指定関係が多いと思う、それ以外は触らなくて良いだろう)を良く考えること。

その他の回答 (2)

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.2

R→右 L→左 S→直 D→割1 E→割2 F→割3 上記の対応表を作成し、vlookup関数の【検索する表の範囲】として設定すれば、良いと思います。 http://allabout.co.jp/computer/msexcel/closeup/CU20060805A/index.htm

517hama
質問者

お礼

ありがとうございます この方法だと一つのセルの中に複数の組み合わせがあってもできるのでしょうか? 試してみます

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"R","右"),"L","左"),"S","直"),"D","割1"),"E","割2"),"F","割3")

517hama
質問者

お礼

早速ありがとうございます この方法だと出来そうですね 参考にさせて頂きます

関連するQ&A

専門家に質問してみよう