dポイントプレゼントキャンペーン実施中!

以下のセル情報がある場合に
文字列で生成された数式を自動計算されるようにする関数の作成に難航しております。
※Excel2019
※VBAではなく関数でお願いします。

★★★★★★★★★★★★★★★★★★★★★★★
A1:数値(例:500)←整数のみ
B1:四則演算(例:*)←四則演算(+,-,*,/)
C1:数値(例:5)←割り算の0は考慮不要
D1:結果
★★★★★★★★★★★★★★★★★★★★★★★

AとBCは別シートで入力された値が自動で転記されるように関数が入っています。
※データの変動無しの場合は「BC:×0」が転記されます。
※割算の場合は0が転送されないように別シートで制御しています。
※文字列連結(CONCATENATE、CONCAT、TEXTJOIN)と
 INDIRECT関数を組み合わせていますがうまくいきません。

上記の場合、D1の結果を関数で実現したいのですが、
どのようにすればよいかご教授願います。

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (3件)

こんにちは



いわゆるEvaluateをなさりたいのだと思いますが、通常の組み込み関数にはそのようなものはないですね。

少々トリッキーですが、以下のような工夫をしている方もいます。
http://officetanaka.net/excel/function/tips/tips …
とは言え、上記もマクロと言えばマクロなので、ご質問の「関数で~」には合致しません。

一方で、ご質問の内容は「四則演算1回だけ」という限定でも良さそうですので、関数で実現なさりたいのなら、演算子で場合分けして計算してしまうのが一番簡単だと思われます。
 =IFS(B1="+",A1+C1,B1="-",A1-C1,B1="*",A1*C1,B1="/",A1/C1,1,"")
のような要領ですね。
    • good
    • 0

あ。


気付いてるかな?
アスタリスク(*)はメタ文字として扱われるので、SEARCH関数やMATCH関数では使えないという意味で文字コードにしてみたんですけど……。

よく考えたらFIND関数ならメタ文字使えないからそのまま使えましたね。
 =FIND(A2,"+-*/")
これを、数式を並べたCHOOSE関数に渡したり、別のセルに用意した数式をINDEX関数やOFFSET関数、VLOOKUP関数に渡して参照させればいい。

やり方はたくさんあるということです。
    • good
    • 1

四則演算ということであれば、普通に4種類の計算式を用意して、そのうちのどの計算式を採用するかを決定してやればいい。



 ('ω') そんだけの事です。

 "+" → CHAR(43)
 "-" → CHAR(45)
 "*" → CHAR(42)
 "/" → CHAR(47)

これで判断できませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!