• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL 2010 VBAまたは関数について)

EXCEL 2010 VBAまたは関数で複数の数字と文字列を分割表示する方法

このQ&Aのポイント
  • EXCEL 2010 VBAまたは関数を使用して、セルに複数の数字と文字列が混ざっている場合に分割して表示する方法を教えてください。
  • VALUE関数とMID関数を組み合わせて、数字だけを抜き出して表示する方法を試しましたが、数字の桁数が違うと表示ができなくなります。そこで、関数を変更せずに表示する方法があれば知りたいです。
  • VBAまたは関数を使用して、セルのE1に入力された値から数字だけを抜き出して、A1に表示する方法、B1に表示する方法、C1に表示する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

 "文字列 数値 分割 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

hirpon2038
質問者

お礼

早速意見ありがとうございます。 早速こちらのほうで検証してみます!

hirpon2038
質問者

補足

すみません今入力してみたのですが、 12,345abc678cdef9ghijkとカンマがついてる場合カンマは飛び抜かして同じく A1に12345と表示させたいのですが、 ご教授お願い出来ませんでしょうか? お手数ではありますが、よろしくお願い致します。

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

>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

関連するQ&A