- ベストアンサー
EXCEL 2010 VBAまたは関数で複数の数字と文字列を分割表示する方法
- EXCEL 2010 VBAまたは関数を使用して、セルに複数の数字と文字列が混ざっている場合に分割して表示する方法を教えてください。
- VALUE関数とMID関数を組み合わせて、数字だけを抜き出して表示する方法を試しましたが、数字の桁数が違うと表示ができなくなります。そこで、関数を変更せずに表示する方法があれば知りたいです。
- VBAまたは関数を使用して、セルのE1に入力された値から数字だけを抜き出して、A1に表示する方法、B1に表示する方法、C1に表示する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
"文字列 数値 分割 vba" でググると、似たような回答が得られるかと存じますが、面白そうですので、ユーザー定義関数 を書いてみました(ただし、Excel 2003 です)。 A1: =VALUE(cutoutnum($E1,COLUMN(A1))) と入力し、これを B1:C1 に オートフィル します。 [標準モジュール] Function cutoutnum(myStr As String, myIdx As Double) As String Dim myStart As Long Dim myMidStr As String Dim myResStr As String For myStart = 1 To Len(myStr) myMidStr = Mid(myStr, myStart, 1) If Not IsNumeric(myMidStr) Then myMidStr = " " End If myResStr = myResStr & myMidStr Next cutoutnum = Application.WorksheetFunction.Trim(myResStr) cutoutnum = Split(" " & cutoutnum)(myIdx) End Function
その他の回答 (1)
- DOUGLAS_
- ベストアンサー率74% (397/534)
>12,345abc678cdef9ghijkとカンマがついてる場合カンマは飛び抜かして・・・ この場合は、 For myStart = 1 To Len(myStr) の前に myStr = Replace(myStr, ",", "") を挿入してください。 同様に小数点が付いているような場合もあろうかと存じますが、その場合は、 If Not IsNumeric(myMidStr) Then を If myMidStr <> "." And Not IsNumeric(myMidStr) Then に置き換え、更に、 cutoutnum = Application.WorksheetFunction.Trim(myResStr) の前に、下記2行を挿入してください。 myResStr = Replace(myResStr, " .", "") myResStr = Replace(myResStr, ". ", "") 以上により、「カンマ」及び「小数点」の2つの問題を両方とも回避する場合は、下記のようなことになります。 Function cutoutnum(myStr As String, myIdx As Double) As String Dim myStart As Long Dim myMidStr As String Dim myResStr As String myStr = Replace(myStr, ",", "") For myStart = 1 To Len(myStr) myMidStr = Mid(myStr, myStart, 1) If myMidStr <> "." And Not IsNumeric(myMidStr) Then myMidStr = " " End If myResStr = myResStr & myMidStr Next myResStr = Replace(myResStr, " .", "") myResStr = Replace(myResStr, ". ", "") cutoutnum = Application.WorksheetFunction.Trim(myResStr) cutoutnum = Split(" " & cutoutnum)(myIdx) End Function
お礼
早速意見ありがとうございます。 早速こちらのほうで検証してみます!
補足
すみません今入力してみたのですが、 12,345abc678cdef9ghijkとカンマがついてる場合カンマは飛び抜かして同じく A1に12345と表示させたいのですが、 ご教授お願い出来ませんでしょうか? お手数ではありますが、よろしくお願い致します。