• ベストアンサー

文字数が決まっていないの文字列を自動に取得して別の文字列に変換

取得して切り出す文字列の長さが固定で無い場合には、どのようにしら良いのでしょうか? 例: ある適当な文字列を分割  ETUROGO → E T U R O G O        の様に一文字ずつ分割  各文字を他の文字列に変換  E→ 2 や T → 電話 のように全文字を  他の文字に変換  この文字列の長さが固定ならば範囲をして変換  する事が出来るのですが、  取得文字列(この場合は、ETUROGO)の長さが  3文字~20文字程度で決まっていない場合  どのようにしたら自動で変換されるのでしょうか?  LEN関数で文字数を取得  LEFT関数やMID関数等で文字列を切り出す。  という事までは考えたのですが。  文字数が変化してしまうとやり方が分かりません。  また、上記の場合は英文字なのですが同様に  文字列の長さが固定ではなく(4文字~20文字の間)  ”東京携帯配備” を ”東京” ”携帯” ”配備”  のように単語で分割し同様に他の文字列に変換  するという場合は、少し異なるのだと思うのですが  INDEX関数等を使えば良いのかな?  とも思うのですが過去の例を見ても理解出来ません。    どうかお教え願います。宜しくお願い致します。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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そのた単語辞書等の仕組みを、深く勉強しないといけないのではと思いますから こう言うのは、「無理」と言うのでしょう。 フリーソフトなどないか、セミプロの作ったソフトがないか探しましょう。

mamenimameni
質問者

補足

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

その他の回答 (2)

  • Admiral
  • ベストアンサー率19% (65/330)
回答No.2

Excelですよね? VBAでfor文使った方がはるかに簡単じゃないですか? どうしてもVBAを使いたくないなら: 文字数の上限が決まっているなら、IF文で文字数が3文字のとき、4文字のとき・・・としていけば可能ですけど、かなり長くなりますよね。 東京携帯配備の方は、必ず2文字ずつ区切られるのですか??

mamenimameni
質問者

補足

早速の回答有り難うございます。 補足させて頂きます。 VBAは、使った事が無いので関数と書いてみました。 VBAという事はマクロを作るという事なのでしょうか? 文字数の上限は決まっているのですが、24文字程度になってしまいます。 東京携帯配備の場合は、1文字~3文字の間になります。 ただ長さは、同様に24文字程度までの間で固定では無いのです。 何か良い方法が有れば、宜しくお願い致します。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

使用しているのはEXCELですよね。 文字数が少ない場合は、数式でできますが20文字となると ユーザー定義関数を作るか、マクロによる自動変換でしょう。 後、変換自体は、SUBSTITUTE関数を使うのが楽だと思います。 A1が”東京携帯配備”なら =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"東京","大阪"),"携帯","電話"),"配備","サービス") で”大阪電話サービス”になります。

mamenimameni
質問者

補足

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

関連するQ&A