セルに演算子を書いて計算ができないものでしょうか。
例:
A1 B1 C1 D1 E1 F1
6 ÷ 3 + 3 5
F1にA1 & B1 & C1 & D1 & E1 としても
6÷3+3と表示されるだけです。
計算を行ってF1が5になるようにすることは出来るのでしょうか。
ご存じでしたらお知らせください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
加減乗除だけでよければ、if関数を使うのが手っ取り早いのではないでしょうか。
A,C列に数値、B列に演算子が書かれているとして、一応全角半角の違いに配慮して、以下のような式をC列に置くというのはどうでしょうか。
=IF(or(B1="+", B1="+"), A1+C1, if(or(B1="-", B1="ー"), A1-C1, if(B1="÷", A1/C1, if(B1="×", A1*C1))))
投稿2020/09/14 14:26
総合スコア13727
0
ベストアンサー
投稿2020/09/14 08:52
総合スコア2019
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
細かいツッコミですが、質問で例示されている ÷ は JavaScript では無効な演算子なので、/ に置換する必要がありますね。× も同様。
補足、ありがとうございます。
そうですね、÷×+-など、"evalで解釈できないが人間にとっては解釈してほしい文字" はevalで解釈できるよう置き換えたいかもしれませんね。
2020/09/15 11:32 編集
質問からは脱線して申し訳ないですが、evalはjavascriptでは危険みたいな情報を見たことがあるのですが、gasでは気にしなくて大丈夫なもんでしょうか?よろしければ教えてください。
興味深い質問、ありがとうございます。
JavaScriptにおけるevalの危険性は、利用者が意図していないコードが実行される可能性がある、という点にあると思います。
GASの場合も、利用者が意図していないコードが実行される可能性はあると思われます。
ただ、ブラウザで動作する生のJavaScriptとGASのスクリプトは、背後にあるオブジェクトが少し異なるようです(詳しくは理解していないのですが、少し触った感じでは)。
例えば、`window.alert()` などは回答内の `evaluate` 関数では解釈できないようでした(セルに "#ERROR!" と表示される)。
「GASのevalでは、危険な関数はある程度無効化されている」ということなのかもしれませんね。
GASの公式ドキュメントを軽く見た限りではevalに関する記述を見つけられなかったので、裏付けがとれていないのが心苦しいですが。
今回のような「計算がしたい」という用途であれば、私の回答内の `evaluate` 関数内で不要な文字を排除したほうが良いのかもしれません。
例えば、0~9の半角数字と+-*/と小数点、あたり以外の文字が含まれていたらevalにかけずエラーとする、など。
2020/09/16 05:31 編集
>algさん
ご回答いただき、ありがとうございました。危険性の意味、少し理解できました。
GAS,とくにスプレッドシートの自作関数として利用する場合は、それほど危険性が無さそうですね。
>質問者 DrvPCOさん
横から失礼いたしました。algさんの回答に draqさんが指摘されてる部分(置換)を
return eval(formula.replace("÷","/").replace("×","*").replace("+","+"));
こんな感じで書き換えてあげると 質問の式も希望の動作になると思います。試してみてください。
&で繋ぐの面倒なら セルに入れる式は
=evaluate(CONCATENATE(A1:C1)) といった書き方でも動きます。
algさん、ありがとうございます。私がやりたいことが出来ました。
そしてdraqさんsawaさんご議論いただきまして感謝します。
皆さんのおかげで、考えの幅ができたと思います。
ありがとうございました。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/15 04:49