- ベストアンサー
エクセルの関数で左から文字まで
エクセルの関数で左から(数字以外の)文字までの文字数を返す関数はどのように表せばよいのでしょうか。 具体的には 25 34 345 ああああ54525 156 のような文字列で初めの「あ」までの文字数「11」を返す関数が知りたいです。スペースも入っています。 Findやlenを使って色々考えましたがどうも上手くいかずといった感じです。よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「左から(数字以外の)文字」とは半角の"0"~"9"と言うことですか? 提示の文字列("25 34 345 ああああ54525 156")には"あ"の左側に半角の空白(" ")が3ヶ所ありますので矛盾しませんか? また、『初めの「あ」まで』ということは検索文字が特定していると解釈できますので回答No.2のような数式提示になると思います。 質問の条件を正確に読み取れるよう記述しないと目的の結果を得られません。 (数字以外の)を(半角数字と半角スペースを除き)とすべきではないでしょうか? 考え方としては提示の文字列を1文字ずつ切り出して文字コードの比較をすれば切り分ける位置を割り出せると思います。(回答No.1が良い例です) 回答No.1の別解として下記の数式を提示します。 =MATCH(1,INDEX(N((MID(A1,ROW(A:A),1))>"9"),0),0) この数式は通常通りEnterキーの打鍵で確定しても問題ありません。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
度のセルでもよいが質問例のぶぶんをコピーしてA2に貼り付け。 =FIND("あ",A2) を入れると「11」になりました。 >上手くいかずと・・ 私がどこかおかしいのですかね? =SEARCH("あ",A2)でも11になりましたが。
補足
回答ありがとうございます。 すみません、書き方が悪かったかもしれません。 「あ」ではなく、「数字以外の文字」なのです。
- msMike
- ベストアンサー率20% (364/1804)
=MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>="A",0) 【お断り】上式は必ず配列数式として入力のこと
お礼
回答ありがとうございます。 すみません。初め配列数式にしていませんでした。配列数式にしたらできました。 ありがとうございました。助かりました。
お礼
すみません。No.1さんの回答をそのままExcelに貼り付けたらエラーになってしまったのですがbunjiiさんのものはそのまま正しく動きました。スペースも数えてくれているので、私が作りたかった関数です。ありがとうございます。 正直Excelでの数式は初心者なのでよくわからないところが有りましたが(Nの関数があるのも初めて知りました。。。)、勉強してこの数式を理解していこうと思います。
補足
すみません。何通りも解釈できるような書き方でした。 詳しく書きます。 エクセルの関数で、左から半角数字以外の文字(例えば、ひらがなや漢字、記号(○など)、スペースも一文字と数えてほしい)までの文字数を返す関数はどのように表せばよいのでしょうか。 具体的には 1 3 4 aaa621778 では、「a」より左側が7文字 12 32 あいう では、「あ」より左側が6文字 748 9 3 <1> では、「<」より左側が8文字 のようにある文字より左側の文字を全て数える関数がほしいです。 これで伝わりましたでしょうか。