- 締切済み
Excelのセル内の文字操作について
Excelのセル内に、例えば Rmax_20.5s (←_ は半角スペースです) などの様な文字列が入っているのを、関数を使用して 20.5 の様に数値のみを残すことは可能でしょうか。 REPLACEやSEARCHなどで試みましたが、出来ませんでした。 どうぞ宜しくお願い申し上げます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
規則性が無いと関数では難しくなるので、関数作ってみました 標準モジュールへコピペ Function 数字を取出す(対象セル) As Single Dim i, frg As Integer Dim a, s As String frg = 0 For i = 1 To Len(対象セル.Value) a = 対象セル.Characters(Start:=i, Length:=1).Caption If IsNumeric(s & a) Then s = s & a frg = 1 ElseIf frg = 1 Then Exit For End If Next i 数字を取出す = s End Function 使い方は A1に「Rmax_20.5s」があるとして B1に =数字を取出す(A1) 関数を入力 20.5 と結果が出ます 入力値=結果 123=エラー 123a=123 a12b34=12 abc=エラー abc12.34.56=12.34 abc123.=123 基本的に文字列から数値として成り立つものを取出します 参考まで
「数値」の直後には必ず文字列(文字数は一定?それとも不定?)があるのでしょうか?文字列がない場合もあるのでしょうか?
補足
書き込み、誠にありがとうございます。 質問の仕方が不充分で申し訳ありませんでした。 回答No1の方の欄に補足説明させていただきましたが、下記のような状態です。 セルの中に ・数値だけ(文字列無し)の場合もある ・スペースがない場合もある ・数値の前のみもしくは後ろのみに任意(文字数は不定)の文字列がある場合もある のような諸条件がある場合でも「数値のみを取り出す」に対応出来るような関数は存在しますでしょうか。 度々申し訳ありませんが、ご存知でしたらご教示願います。
- web2525
- ベストアンサー率42% (1219/2850)
文字列の形式が同じ 数字の前にスペースがあり、数字の後の文字が一文字なら =MID(セル,SEARCH(" ",セル,1)+1,LEN(セル)-SEARCH(" ",セル,1)-1)*1 これで数値だけの取出しができるかと思います。
お礼
早々のご回答、誠にありがとうございました! お教え頂いた式のとおり、試みてみたら出来ました。 しかし、元の私の質問の仕方が悪く大変申し訳なかったのですが、 セルの中に ・数値だけの場合もある ・スペースがない場合もある ・数値の前のみもしくは後ろのみに任意の文字列がある場合もある のような諸条件がある場合でも「数値のみを取り出す」に対応出来るような関数は存在しますでしょうか。 度々申し訳ありませんが、ご存知でしたらご教示願います。
お礼
関数を作っていただき、大変助かりました!! またご説明も大変分かりやすく感謝しております。 さっそく標準モジュールへコピペしたら、OKでした。 数値のみ時のエラーについては解決できました。 文字列のみ時のエラーについては運用で検討してみようと思います。 本当にありがとうございました! m(_ _)m