私のExcelで2枚のワークシートがあり、最初のシートではドロップダウンリストから計算方法を選択して計算用の変数を入力できます(青色の列は緑色のセルいくつかの一定数)。結果のエントリは、2番目のワークシート(データベース)から対応する計算式を検索し、シートに式を貼り付ける1、データベースのセルの代わりにシート1のセルを使用して計算する式が必要です。相対セルで返す式をExcelに変換する
現在私は、以下のように評価呼び出されるユーザ定義関数を作成した:私は計算式からの細胞を使用する結果を取得するVLOOKUP :=Eval(VLOOKUP(A3,Database!A2:E10,5,FALSE))
と評価を組み合わせることによって
Function Eval(ref As String)
Eval = Application.Evaluate(ref)
End Function
私のデータベースでは、計算中に計算式がシート1のセルを取る結果をどのように得ることができますか?
こんにちはディルクを尋ねる、ご質問があるどうもありがとうございました場合は
=B##*C##*D##
、私は投稿の質問は唯一の簡易版です。私は50以上の方程式を考慮する必要があります。その場合、選択式は非常に長くなります。しかし、2番目のケースでは、UDFを自分のモジュールに直接コピーすると何らかの理由で、以前のEval関数と同じように動作します。あなたは私にそのUDFに関するいくつかの追加のヘルプを提供していただけますか? –
@LiuRoye 'Evaluate'関数はシートから実行され、アプリケーションからは実行されません。 'Sheets(" Sheet1 ")。Evaluate(...)のように使用すると、常に" Sheet1 "が使用されます。 'Application.Evaluate(...)'として直接使用すると、 'ActiveSheet'を使用します。複数のシートを使用すると、 'Application.Evaluate(...)'が極端に失敗する可能性があります。 Sheet2 A1 'A2'とA2 2で実行します。Sheet1 A2で '1'を入力します。 Sheet1で 'Sheet2!A1'を使用すると、' 1'が表示されます。しかし、シート2に行って「A1」を再入力してからシート1に戻った場合、数式に「2」が表示されます(私のコードはまだ1になるはずです) –
@LiuRoyeこの問題を回避する最も良い方法は、 'Sheet1!B2 * Sheet1!C2 * Sheet1!D2'のような完全な参照。この方法で、あなたはそれが何であっても望むようにする必要があります;) –