• ベストアンサー

文字列から数値を抜き出して計算する関数

5t×5h×5Lとあれば、5×5×5の計算結果を返す関数をご教授くださいませ。 t×h×Lのワンセットがあれば、tの左、hの左、Lの左の数値を抜き出して計算していただけるといいです。 316L 5t×5h×2Lとなっている場合もあります。 それでも、t×h×Lの左横以外は無視です。 5×5×2で50が正解です。 よろしくご教授お願いします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.10

No2とNo9について。 No2について、すべて4桁だとオーバーフローするので データ型を変更します。 それと、tより左側の区切りが半角空白以外に直接 文字が入っていても認識できるように変更しました。 Function funcB(ByVal str As String) As Double Dim xi As Long Dim yi As Long Dim xj As Long Dim yj As Long Dim xk As Long Dim yk As Long Dim i As Long Dim j As Long Dim k As Long Dim istr As String Dim jstr As String Dim kstr As String '一番目 xi = InStrRev(str, "t") For yi = xi - 1 To 1 Step -1 If IsNumeric(Mid(str, yi, 1)) Then istr = istr & Mid(str, yi, 1) Else Exit For End If Next i = CLng(StrReverse(istr)) '二番目 xj = InStrRev(str, "h") For yj = xj - 1 To 1 Step -1 If IsNumeric(Mid(str, yj, 1)) Then jstr = jstr & Mid(str, yj, 1) Else Exit For End If Next j = CLng(StrReverse(jstr)) '三番目 xk = InStrRev(str, "L") For yk = xk - 1 To 1 Step -1 If IsNumeric(Mid(str, yk, 1)) Then kstr = kstr & Mid(str, yk, 1) Else Exit For End If Next k = CLng(StrReverse(kstr)) funcB = CDbl(i) * CDbl(j) * CDbl(k) End Function

その他の回答 (11)

回答No.1

ありません。 VBAでFunctionとして開発する必要があります。

関連するQ&A