web-dev-qa-db-ja.com

別のセルで文字列として記述された数式を使用する方法[Googleスプレッドシートで評価]

evaluate関数がないGoogleスプレッドシートに関する古い投稿をいくつか読みました。 2016年に解決策はありますか?

最も簡単な例。

  • 'A1'には次の文字列が含まれています:UNIQUE(C1:C5)
  • 'B1'その中で評価したいnique 'A1'で書かれた式。

私はこのように連結しようとしました: 'B1'を含む="="&A1しかし、結果は文字列= UNIQUE(C1:C5)です。 間接式も試しました。

最後の希望を打ち破る提案はありますか?

追記

目的は、スプレッドシートに数式を記​​述し、他のいくつかのスプレッドシートでこれらの数式を使用することです。したがって、変更は1か所で行う必要があります。

8
soneangel

短い答え

var formula = Origin.getValue()のようなものを含むスクリプトを使用して文字列を取得し、destination.setFormula(formula)のようなものを使用して式を返します。

説明

OPですでに述べたように、GoogleスプレッドシートにはEVALUATE()組み込み関数がありません。カスタム関数は1つまたは複数の値しか返すことができず、他のセルプロパティを変更できないため、カスタム関数は使用できません。

カスタムメニュー、イベント、またはGoogle Apps Scriptエディターからトリガーされたスクリプトを使用して、指定したセルの数式を更新できます。

数式は文字列として保持されるため、スプレッドシート自体よりもスクリプトに保持する方が簡単な場合があります。

以下は、指定された数式をアクティブ範囲に追加する非常に単純なスクリプトです。

 function addFormula(){
 var Formula = '= UNIQUE(C1:C5)'; 
 var range = SpreadsheetApp.getActiveRange(); 
 range.setFormula (式);
}
4
Rubén