Excel のセル関数 VALUE の数式

Excel のセル関数 VALUE の数式

Android で実行する必要がある Excel シートがあります。唯一の問題は、評価関数に VBA を使用したのですが、VBA は Android アプリでは動作しないということです。代替手段を探していたところ、関数「VALUE()」にたどり着きました。次のセルがあることがわかりました。

=VALUE(10 + 5 * 3)

正しい結果 (25) を返します。ここで私がやりたいことは次のとおりです。

=VALUE(A2)

ここで、A2 は「10 + 5 * 3」を含むテキストです。しかし、これは「#VALUE!」を返します。

VALUE() を使用して単純な数式を評価する方法はありますか?

ありがとう!

答え1

Excel のフルバージョンでこれを行うハックが何年も前から存在しています。Android で機能するかどうかはわかりませんが、試してみる価値はあるかもしれません。

Excel 2013を使用しています。

[数式] リボン バーに移動し、[名前の定義] を選択します。

任意の名前を付けてください。例:myResult

「参照先:」の部分に数式を入力します=EVALUATE(A2)

=myResult次に、答えを表示したいシートの場所に数式を入力します。

答え2

INDIRECT() を使用します。

例(Microsoft Office INDIRECT 関数):

データ
B2 1.333
B3 45
ジョージ10
5 62
式の説明 結果
'=INDIRECT(A2) セルA2の参照値。参照は1.333です。
                   セル B2 には値 1.333 が含まれています。                                   
'=INDIRECT(A3) セルA3の参照の値。参照先は45です。
                   セル B3 には値 45 が含まれています。
'=INDIRECT(A4) セルB4には「George」という名前が定義されているため、10への参照は
                   定義された名前はセルB4にあり、値10が含まれています
'=INDIRECT("B"&A5) "B"をA5の値5と組み合わせます。これは、62
                   値 62 を含むセル B5 を参照します。

適用対象: Excel 2016、Excel 2010、Excel Starter、Excel 2013、Excel Online、Excel 2016 for Mac、Excel for Mac 2011、Excel 2007

答え3

そうするには「コツ」があります。

文字通り引用符で囲まれたバージョンではなく、数式で使用されているような単純な数式 (10 + 5 * 3) を評価したいとお考えだと思いますVALUE()。ただし、関心のあるものを引用符で囲んで表示する通常の規則を使用しておらず、セル内で評価する文字列を引用符で囲んで表示する場合も、同様に実行できます。

そして非常にシンプルです。

おそらくあなたがやりたいことを実行するには、セル A1 に次の内容があるとします: セル A1 10 + 5 * 3を基準にして出力先をどこにするかを検討し、その目的のセルを選択します。したがって、セル C1 に出力を置きたい場合は、C1 を選択します。選択した状態で、名前付き範囲 (たとえば TextCalculate) を作成し、そのRefers to値に次の数式を指定します。

=EVALUATE(A1)

それを閉じて、セル C1 に次のように入力します。

=TextCalculate

そして、A1 にあるものはすべて希望どおりに評価され (可能であれば: Excel が理解できるものでなければなりません)、その結果がセル C1 に表示されます。

入力を引用符で囲む必要がある場合は、その種類の入力データ用に別の名前付き範囲を設定し、次の値を指定するだけです。

=EVALUATE(EVALUATE(A1))

最初はEVALUATE()引用符を削除し、2 番目は残ったクリーンな文字列を評価します。

関数を置くと言ったことに注目してください名前付き範囲内セルに直接配置すると言うのではなく、これは絶対に必要なことであり、ごまかすことはできません。これを試してうまくいかない場合は、おそらくセル側で試したのでしょう。名前付き範囲内で実行すれば、うまくいきます。

それはなぜでしょうか? まあ、それは興味深いですが、あなたの質問から、あなたはすでにその理由を知っていると思います...しかし、他の人は知らないかもしれません (したがって、次のことと、名前付き範囲でのみ試すという、あなたには確かに必要のない警告があります)。 この関数は、VBA が実装される前に Excel がマクロを作成するために使用していたコマンド セットからのものです。 これは、古いツールを使用して作成されたマクロで使用するように設計されており、Excel 自体でそれらがまだ機能する唯一の場所は、名前付き範囲機能です。 これらは、マクロの外部では機能したことがなく、現在でも機能しません。ただし、名前付き範囲内は除きます。

Android バージョンが名前付き範囲を使用できる限り、そこでは機能する可能性があります。正直なところ、私はそれを確認できませんし、おそらく機能しないと思います。私の推測では、Android バージョンは移植ではなく書き直しであり、マクロ用であったため、Android ではマクロが実行できないため、Excel のこの側面が削除された可能性があります。ただし、これは VBA 自体の一部ではなく、VBA にアクセス可能であるだけなので、VBA へのインターフェイスが組み込まれていないにもかかわらず移植され、登場した可能性があります (したがって、他のものにも組み込まれていないと推測します)。Android EVALUATE()Excel で名前付き範囲を試して確認してください。実際には持ち込まれなかったかもしれませんが、持ち込まれた可能性もあります。もちろん、VBA のツールとしてではありませんが、名前付き範囲ではまだ使用できる可能性があります。

停止する前に何かをテストする必要があります...残念... で使用されている名前は、LET()個々の数式に「スコープ設定された」名前付き範囲に非常に似ているようです (一般的にはそのように見え、実際に定義された名前付き範囲に優先します...)。 で使用されている名前の数式で機能するかどうか疑問に思いましたLET()。残念ながら、機能しませんでした... それ以上 (またはそれ以下) の理由があるはずです。

関連情報