エクセルで”文字列内の半角(数字)の位置を求める関数”を捜しています。目的ですが、当方が作成しているエクセルでの住所一覧で、一つのセル内に”三田3-4-5”とある場合に、三田という住所のふりがなだけをphonetic関数で拾って、並べ替えるために必要としています。日経BPのエクセルテクニックのサイト、http://arena.nikkeibp.co.jp/tec/excel/ で探してもなく、当サイトでキーワードを”エクセル 半角”で検索してもありませんでした。エクセルの教則本、超図解エクセル2000の関数編にて、”文字列操作”関数あたりを見ますと、”find関数”を使うのかなー、というレベルまでの当たりはついたのですが・・・ それとも関数だけでは完結できず、VBEでなければ実現できないのでしょうか。以上皆様のお力をお借りできるようお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/03/14 15:06:02
  • 終了:--

回答(4件)

id:maq No.1

maq回答回数81ベストアンサー獲得回数52004/03/14 16:21:40

ポイント18pt

URLはダミーです。

関数だけでは、姑息な手段を使うしかないような気がします。Excelは詳しくないので可能かも知れませんが…。

姑息な手段としては、たとえば以下のような式。

=1+IF(CODE(MID(A1,1,1))>256,1,0)+IF(CODE(MID(A1,2,1))>256,1,0)+IF(CODE(MID(A1,3,1))>256,1,0)+IF(CODE(MID(A1,4,1))>256,1,0)+IF(CODE(MID(A1,5,1))>256,1,0)+IF(CODE(MID(A1,6,1))>256,1,0)+IF(CODE(MID(A1,7,1))>256,1,0)

これで、A1セルにある半角の先頭位置が返ります。

ただし、以下の制約があります。

制約1:半角以降に再び全角文字がでてこないこと

制約2:7文字以上の文字列には対応できない

制約3:7文字以下の文字列には対応できない

制約2の対応文字数は、+IF(…)を増やすことである程度可能です。

制約3の対応文字数は、もともとのセル(例ではA1)の文字数をCONCATINATEとREPT関数あたりを利用して半角スペースでも追加して埋める必要があります。(例:=CONCATENATE(”三田3-4-5”,REPT(” ”,10))

トンデモ系の回答なので、ポイントは不要です(^^;。

id:aryata

>トンデモ系の回答なので・・・→いえいえ。ありがとうございました。

2004/03/14 16:24:40
id:splizer No.2

splizer回答回数4ベストアンサー獲得回数02004/03/14 16:53:55

ポイント18pt

http://www.hatena.ne.jp/1079244362#

エクセルで”文字列内の半角(数字)の位置を求める関数”を捜しています。目的ですが、当方が作成しているエクセルでの住所一覧で、一つのセル内に”三田3-4-5”とある場.. - 人力検索はてな

数字の位置を求める方法で考えてみました。ちょっと姑息な手段です。

対象のセルをFINDで0から9まで探し、それらの最小値を求めます。とりあえず数字がなければ、99を返すことにしています。

=MIN((IF(ISERROR(FIND(”0”,A1,1)),99,FIND(”0”,A1,1))), (IF(ISERROR(FIND(”1”,A1,1)),99,FIND(”1”,A1,1))), (IF(ISERROR(FIND(”2”,A1,1)),99,FIND(”2”,A1,1))), (IF(ISERROR(FIND(”3”,A1,1)),99,FIND(”3”,A1,1))), (IF(ISERROR(FIND(”4”,A1,1)),99,FIND(”4”,A1,1))))

とりあえず長くなるので0から4までです。

id:aryata

なるほど。工夫すればできるもんですね。私の知恵の浅さを痛感です・・・ ありがとうございました。

2004/03/14 17:06:45
id:akasyoubin No.3

akasyoubin回答回数16ベストアンサー獲得回数02004/03/14 21:30:28

ポイント18pt

文字列の中から全角だけを取り出して、ふりがなをつける方法はどうでしょうか。

お役に立てなかったら、ポイント不要です。

id:aryata

なるほど。ありがとうございました。

2004/03/14 22:29:28
id:Einstein No.4

Einstein回答回数62ベストアンサー獲得回数02004/03/14 22:04:17

ポイント18pt

考え方を変えて、「位置を返す」のではなくて「3-4-5を除いた値を返す」という方式でもできそうですね。

例えば、=SUBSTITUE(SUBSTITUTE(A1,”0”,””),”1”,””) … という具合に、数字とハイフンを除いた値を取り出しで、それをphoneticの引数として与えるとか。

id:aryata

なるほど。皆さんお知恵がありますね。本当にありがとうございました。

2004/03/14 22:29:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません