2017-08-18 5 views
-1

作成する必要があるvlookupを作成すると、式が返され、返される数式が評価されます。私はそれを見て、私がそこに半分を得るこのlinkを見つけました。Excel式を返すVlookupは、間接関数を除いて動作します

私は、ブックに、このユーザー定義関数を追加する必要があります。

Function Eval(Ref As String) 
    Application.Volatile 
    Eval = Evaluate(Ref) 
End Function 

その後、私は式を返して、それを評価するためにevalを使用することができます。これは正常な式を返すときに機能しますが、返された式に間接関数を追加すると、動作が停止します。私は間接関数が必要です。これは、これが最終的に使用されるブックであるため、どの行が使用されるのか分かりません。

workbookは、基本式(作品)、数式を間接関数(作品)、Vlookupを使って数式(作品)、EvalとVlookupを使って数式結果(実績)、Eval with Indirect数式(動作しません)、間接的な結果を持つ数式を表示するvlookupのEval(動作しません)

間接関数が追加されるとeval関数が機能しなくなります。これをどうやって解決するのですか?

+1

未知のインターネットソースからバイナリファイルをダウンロードする必要がないサンプルデータと数式を提供できますか? kthx。 –

+0

@DavidZemens、任意の数式。そのデータは無関係ですが、この間接( "H"&ROW())* 30と= eval(VLOOKUP(G2、A:C、2、FALSE))を試してください。 – djblois

+1

は1つの数式ですか? 2つの場合はどのように関係しますか? –

答えて

1

INDIRECTの代わりにINDEXを使用します。

INDEX(H:H,row())*30 

問題の番号は"になります。

enter image description here

私はまた、正しいシートが使用されていることを確認するためにApplication.Caller.Parent.Evaluateを使用します。

Function Eval(Ref As String) 
    Application.Volatile 
    Eval = Application.Caller.Parent.Evaluate(Ref) 
End Function 
関連する問題