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

取得して切り出す文字列の長さが固定で無い場合には、どのようにしら良いのでしょうか?

例:
ある適当な文字列を分割
 ETUROGO → E T U R O G O
       の様に一文字ずつ分割
 各文字を他の文字列に変換
 E→ 2 や T → 電話 のように全文字を
 他の文字に変換

 この文字列の長さが固定ならば範囲をして変換
 する事が出来るのですが、
 取得文字列(この場合は、ETUROGO)の長さが
 3文字~20文字程度で決まっていない場合
 どのようにしたら自動で変換されるのでしょうか?

 LEN関数で文字数を取得
 LEFT関数やMID関数等で文字列を切り出す。
 という事までは考えたのですが。
 文字数が変化してしまうとやり方が分かりません。

 また、上記の場合は英文字なのですが同様に
 文字列の長さが固定ではなく(4文字~20文字の間)
 ”東京携帯配備” を ”東京” ”携帯” ”配備”
 のように単語で分割し同様に他の文字列に変換
 するという場合は、少し異なるのだと思うのですが
 INDEX関数等を使えば良いのかな?
 とも思うのですが過去の例を見ても理解出来ません。
 
 どうかお教え願います。宜しくお願い致します。

A 回答 (3件)

これは何の質問ですか。

エクセル?
また用いる手段は
(1)関数の範囲で解け?
(2)VBAを使っても良い?
(A)ある適当な文字列を分割
関数式で
A1に文字列ありとする。
B1に=MID($A1,COLUMN(B1)-1,1)といれ
B1を最大文字数の列まで10文字でK列まで複写。
B1からK1までに1文字ずつ入ります。
$が大事です。
(B)E→ 2 や T → 電話 のように全文字を
 他の文字に変換
VLOOKUP関数を使うことによって、単語数が表を作れるほどの簡単なものなら、表さえ出来れば、可能かと思います。
(C)単語で分割し同様に他の文字列に変換
 するという場合
「単語」の判別(切りだし)が、単語辞書を使わないと出来ないので、VBA程度出きる人も、その点のプロでないと出来ないでしょう。増して関数では出来ないでしょう。
APIそのた単語辞書等の仕組みを、深く勉強しないといけないのではと思いますから
こう言うのは、「無理」と言うのでしょう。
フリーソフトなどないか、セミプロの作ったソフトがないか探しましょう。

この回答への補足

早速の回答有り難うございました。
使用ソフトは、エクセルです。失礼致しました。
関数でもVBAでも良いのですが、VBAは使った事が無い初心者です。
しかし丁寧な回答で少し分かりました。
明らかに無理な部分も教えて頂きましたので、もう少し整理してみて、どこまで出来るのか頑張って見ます。
有り難うございます。

補足日時:2004/10/28 10:29
    • good
    • 1

Excelですよね?


VBAでfor文使った方がはるかに簡単じゃないですか?

どうしてもVBAを使いたくないなら:
文字数の上限が決まっているなら、IF文で文字数が3文字のとき、4文字のとき・・・としていけば可能ですけど、かなり長くなりますよね。

東京携帯配備の方は、必ず2文字ずつ区切られるのですか??

この回答への補足

早速の回答有り難うございます。
補足させて頂きます。
VBAは、使った事が無いので関数と書いてみました。
VBAという事はマクロを作るという事なのでしょうか?
文字数の上限は決まっているのですが、24文字程度になってしまいます。

東京携帯配備の場合は、1文字~3文字の間になります。
ただ長さは、同様に24文字程度までの間で固定では無いのです。

何か良い方法が有れば、宜しくお願い致します。

補足日時:2004/10/28 10:09
    • good
    • 0

使用しているのはEXCELですよね。


文字数が少ない場合は、数式でできますが20文字となると
ユーザー定義関数を作るか、マクロによる自動変換でしょう。

後、変換自体は、SUBSTITUTE関数を使うのが楽だと思います。
A1が”東京携帯配備”なら
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"東京","大阪"),"携帯","電話"),"配備","サービス")
で”大阪電話サービス”になります。

この回答への補足

早速の回答有り難うございます。
SUBSTITUTE関数は、使った事がありませんでした。
調べて使ってみます。

補足日時:2004/10/28 10:13
    • good
    • 0

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