プロが教えるわが家の防犯対策術!

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

A 回答 (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。
もし使うなら、自分の場合、上記コードをどう変えたらよいか(列指定関係が多いと思う、それ以外は触らなくて良いだろう)を良く考えること。
    • good
    • 0

R→右


L→左
S→直
D→割1
E→割2
F→割3

上記の対応表を作成し、vlookup関数の【検索する表の範囲】として設定すれば、良いと思います。

http://allabout.co.jp/computer/msexcel/closeup/C …
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/04/04 10:53

一例です。


=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"R","右"),"L","左"),"S","直"),"D","割1"),"E","割2"),"F","割3")
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/04/04 10:52

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