- ベストアンサー
【エクセルの数式を教えて下さい】
【エクセルの数式を教えて下さい】 エクセルで、A列を参照して、B列に次のように反映させたいです: A列 A1 apple A2 a banana A3 a cup of tea B列 B1 a B2 b B3 c スペースを含まない文字列の場合は、最初の一文字を、スペースを含む文字列の場合は、最初のスペースの次の一文字を返す数式を作りたいのです。 countif や find を使って作れるかと思ったのですが、自分のレベルではダメでした。 関数が出来る方、教えて頂けますか? よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
エラー処理を忘れていました。 B1=IF(ISERROR(FIND(" ",A1,1)),LEFT(A1,1),MID(F13,FIND(" ",A1,1)+1,1)) " "の中は半角スペースです。 FIND関数は検索対象の中にキーワードが含まれていないとエラーになります。 エラーになったときは、文字列の最初の文字を抽出します。 2、3のケースで確認しました。これで、最初のスペースの後の文字が抽出されると思います。 本当は、a cup of tea は、c ではなく t にしたいのでしょうけど。これは難しい。VBAならできると思いますが。
その他の回答 (4)
- tear13
- ベストアンサー率33% (3/9)
=MID(ASC(A1),IF(ISERROR(FIND(" ",ASC(A1))),0,FIND(" ",ASC(A1)))+1,1) とか、 =IF(ISERROR(FIND(" ",ASC(A1))),LEFT(ASC(A1),1),MID(ASC(A1),FIND(" ",ASC(A1))+1,1)) ではどうですか?
お礼
tear13様 ご回答、ご教示どうも有難うございました。 2式とも、欲しい文字がちゃんと返りました。 ISERROR関数は知りませんでしたので、使えるようになりたいと思いました。 最初の式は、MID関数から始めて収めてあって、格好よいですね。 今回はお世話になりました。
- m_and_dmp
- ベストアンサー率54% (987/1817)
最初の文字列が決まっていない場合は、FIND関数で正解です。 B1=MID(A1,FIND(" ",A1,1)+1,1) " "の中は半角スペースです。
- m_and_dmp
- ベストアンサー率54% (987/1817)
theにならなくても、an になることはありそうなので、修正します。 B1=IF(Left(A1,1,2)="a ", MID(A1,3,1),IF(LEFT(A1,1,3)="an ", MID(A1,4,1),Left(A1,1))) この方法ですと、IFをもう一つネストすると the でもOKです。
お礼
m_and_dmp様 ご回答を有難うございました。 修正バージョンも考えて下さって有難うございます。 確かに、apple と a banana と a cup of tea は例示に過ぎなくて、"a" "an" "the" には限らないのです。今後どういうフレーズ(というか、アルファベットの並び)が出てきても対応できるように、限定しない数式を作っておきたいのです。 シンプルなようでいて、考え始めたら、自分ではお手上げでした。 スペースの有る無し、どこに入るか、で区別するのって、難しいようですね…。
- m_and_dmp
- ベストアンサー率54% (987/1817)
B1=IF(MID(A1,2,1)=" ",MID(A1,3,1),Left(A1,1)) " "の中は半角スペースです。 でどうですか? a bananaは、the bananaとなることはないですね?最初がtheだともう少し複雑になります。
お礼
m_and_dmp様 ご回答、ご教示どうも有難うございました。 欲しい文字がちゃんと返りました。 ISERROR関数は、「=()」や「=NOT()」で避けていましたね…。使えるようになりたいと思いました。 また、恥ずかしながら、「エラーになったときは、文字列の最初の文字を抽出」するという、FIND関数のルールも知りませんでした。勉強になりました。 今回はお世話になりました。