| Excel Tips by pPoy |
| Macro | 文字列を式に変換する関数 《Evaluateメソッド》 (Excel97,Excel2000,Excel2002) | ||
|---|---|---|---|
|
Excel で計算式をセルに入力する場合は、式の最初に 「=(イコール)」 を入力します。 もしくは、「+(プラス)」 か 「-(マイナス)」 記号に続けて式を入力します。 ところが、単純に 「100*1.5」 の様に入力すると、 漏れなく文字列として判断され、式として計算してくれません。 Excel 4.0 マクロ関数を使用することもできますが、これはシート単位で設定する必要があります。 それでは面倒なので、ユーザー定義関数を作ってみました。 セルに入力された文字列を式に変換後、計算結果を返す関数です。 以下のコードを標準モジュールに貼り付けてください。 | |||
Function myEvalAry(ParamArray ItemR()) As Variant
'引数を文字列結合後数式に変換し演算結果を返す関数
'配列を丸ごと渡すことも可(配列のネストは1回のみ)
'2006/03/04 pPoy
Dim re As Variant
Dim strTmp As String
Dim varR As Variant
Dim i As Variant, j As Variant
strTmp = ""
varR = ItemR()
For Each i In varR
If IsArray(i) Then
'引数が配列の場合
For Each j In i
If IsNumeric(j) Then
re = CStr(j)
Else
re = j
End If
strTmp = strTmp & re
Next
Else
'引数が配列以外
If IsNumeric(i) Then
re = CStr(i)
Else
re = i
End If
strTmp = strTmp & re
End If
Next
myEvalAry = Application.Evaluate(strTmp)
End Function
| |||
≪使い方≫![]() 通常の関数と同様に、 「 =」 に続けてセルに入力します。=myEvalAry(セル番地) ![]() 入力後エンターを押すと、 無事に計算結果が表示されます。 |
![]() 複数セル範囲を引数として、 計算させることもできます。 =myEvalAry(セル番地:セル番地) この例では、A3 から C3 までの 範囲を引数に指定しています。 10*0.5-(100/5) の計算結果として、-15 が返ります。
|
| ≪注意≫ |
Copyright(C) pPoy 2006-2010