文字列を数式であるかのように評価するExcel関数?


26

セルにテキスト文字列があり"11+5"、さらに"=11+5"はセルに格納されているとします。その文字列を数式であるかのように実際に評価できる関数がExcelにありますか?

これは、Excelで「動的」数式を記述できるようにする別のプロジェクトに役立ちます。


3
excelには、まさにこれを行うこのEVALUATE()関数がありました。それはかなり前のことでしたが、新しいエクセルについてはあまりよくわかりません。ぶらぶらして、私は何かを見つけることができるかどうかを確認します。
aCuria

1
この関数はおなじみのように聞こえますが、Excel2007でそれを見つけることができません。これは現在使用しているものです。
drapkin11

私はそれを見つけることができません= /
aCuria

回答:


26

EVALUATE 現在のすべてのバージョンのVBAで利用可能

VBAコードに含めるか、単純なUDFにラップして、ワークシート関数として使用可能にすることができます。

Function ev(r As Range) As Variant
    ev = Evaluate(r.Value)
End Function

基本的に、渡されたパラメーターの値は、セルに入力された場合と同じように、Excelの数式として扱われます。

"11+5"そして"=11+5"、同じ結果を生成します


1
Excelのユーザー定義関数についてすべて忘れてしまいました。ありがとうございます。
-drapkin11

RangeパラメーターをStringに変更する小さな変更を行ったところ、うまく機能します。ありがとう
マカー14年

17
=evaluate(put_reference[s]_here)

これは半機能です-Name Managerでのみ使用できます。

これはあなたがそれを使用する方法です:

  • セルをポイントして、[名前マネージャー]を開きます([式]タブから、またはCTRL + F3をクリックして)

    評価例

  • =evaluate(目的のセルを記述してクリックします(相対参照を維持するのが最善です)。

  • で式を完成させる )
  • それに名前を付けます-(この例では、単に呼び出しますeva)。
  • OKをクリックします。

ここで、B1を選択し、これがすべてA1を参照するようにしたとします。A1に「1 + 1」を入力し、B1に書き込む=evaことができます。ENTERを押すと、B1の値はになります2。Name Managerの参照は相対的である=evaため、使用して、希望する場所から1セル離れた任意のセルの評価を取得できます。(例:B2では=eva、セルA2の結果を返します)


1
非常に良い-そして知ってうれしい。=(テーブル名[[列@]])EVALUATEあなたは簡単にほとんどエクセルヘルプ-または高度なチュートリアルで見つけることができない何か:それも、テーブルの列のために働く
パスキ

1
それは呼ばれていますエクセル2016 DEに例えば-あなたがローカライズされたビルドを使用している場合...とExcelの数式といつものように、あなたは、ローカライズされた機能を使用する必要がある=auswerten(...)
kiwiwings

7

@karelと@Laurentiu Miricaからのすばらしい回答には重要な注意点があります。参照セルが変更されない限り、評価関数は再計算されません。たとえば、セルC1にはテキスト"A1+B1"が含まれ、D1には関数が含まれます=eval。A1またはB1の値が変更された場合、セルD1 は再計算されません

評価問題のデモンストレーション

これは、文字列または評価セルに揮発性関数を導入することで修正できます。これにより、ワークシートが再計算されるたびに再計算が強制されます。たとえば、セルC1をに置き換えることができます=if(today(),"A1+B1",)。または、D1をに置き換えることもできます=if(today(),eval,)。任意の揮発性関数が行う必要があります。

3番目の、おそらく最も簡単な解決策は、名前マネージャーの半機能を =if(today(),evaluate(c1),)


おかげで私はしばらくの間、このようなトリックを探していました:)
ベン・ペルソニック

4
=indirect()

これをセルで(連結と一緒に)使用すると、非常に便利です。

たとえば、次の式は別のワークシートのセルB5の値を表示します(その名前はこのワークシートのセルA2に保存されています)。

=INDIRECT(CONCATENATE(A2,"!B5"))

間接的に機能させるには、外部ワークシートが開いている必要があります。


動作せず、#REFを返す-SIslam 16
1

10
INDIRECTは、セル参照の作成の一部としてのみ、数学と機能を実行できます。質問で尋ねられた一般的な意味では使用できません。
fixer1234
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.