Googleスプレッドシートの「isFormula」式を探しています


13

特定のセルにプレーンな(手動で入力された)値があるのか​​、数式があるのか​​を判断する関数はありますか?

回答:


5

この小さなスニペットを使用すると、それを行うことができます。

コード

function isFormula(startcol, startrow) {
  // prepare string
  var str = String.fromCharCode(64 + startcol) + startrow;

  // retrieve formula
  var fCell = SpreadsheetApp.getActiveSpreadsheet()
    .getRange(str).getFormula();

  // return false if empty else true 
  return fCell ? true : false;
}

使用法

ここに画像の説明を入力してください

では、この答え、トム・ホーウッドは引用符の使用を回避する方法を発見しました。

[ツール]> [スクリプトエディター]でスクリプトを追加し、バグボタンを押して認証を有効にします。

サンプルファイルを作成しました:式の確認


私はさまよっていました...あなたの関数は、実際にはセルのアドレスである文字列を取得していますisFormula2("A1")。だから私はこのような新しいバージョンを作成しようとしました:function isFormula2(cell) { return (cell.getFormula())!=""; } そして、私はそれを使用して呼び出し可能になると思ってisFormula2(A1)いましたが、これは機能しないようであり、デバッグしようとするとcell未定義として表示されます...のf(A1)代わりに動作するように変更されましたf("A1")か?
エペレグ

@epeleg修正された回答を参照してください。
ジェイコブヤントゥインストラ14年

:)そのため、アドレスを取得する代わりに、列と行を取得するように変更しました。ここに呼び出しがちょうどあるような構文はありませんisFormula(a1)か?(MS Excelでは、範囲パラメータを取得する機能であろう)
epeleg

@epeleg最も近いのはisFormula_1( "A2:A2")です。サンプルファイルを見てください。カスタム関数はそのように機能します。引用符がなければ、値を取得できます。文字列を引用符で囲むと、そのまま使用できますが、コピー/貼り付けできません。COLUMNおよびROWソリューションは、回避策です(必然的に)。
ジェイコブヤントゥインストラ14

isFormula(a1:a1)で呼び出した場合にカスタム関数が取得する値は何ですか?そして、isFormula(a1:b2)はどうですか?
epeleg

9

短い答え

ISFORMULA()組み込み関数を使用します。

背景と説明

新しいGoogleスプレッドシートで文書化されていない式を発見したと思います。@Pnutsは、CELL式が機能しないと言っていました(一部は新しいGoogleスプレッドシートでしか使用できないため)ので、コードを新しいGoogleスプレッドシートにコピーしました。エラーが発生し、(カスタム)式は2つではなく1つの引数しか受け入れないことを示しています。
ここに画像の説明を入力してください

を別の名前に変更するisFormulaと、カスタム関数が機能するようになりました。これが事実であった後、私はさらに別のGoogleスプレッドシートを作成し、isFormula式を使用しました。数式はオートコンプリートに表示されませんが、機能しています:
ここに画像の説明を入力してください

したがって、新しいGoogleスプレッドシート全体で数式を使用できる場合、これが最良の答えです。

=isFormula(A1)

注意

新しいGoogleスプレッドシートでのみ使用できます。他の数人に新しいフォーミュラを確認するように依頼しましたが、確認されました。文書化されていないため、その実装は不明であり、消滅する可能性があります。ARRAYFORMULAこの新しい式で使用する場合は動作しません。

サンプルファイルを作成しました:isFormula


いいね Googleは私の推奨事項を採用しているように見えます:)しかし、「新しいGoogleスプレッドシート」に切り替えるにはどうすればよいですか?
エペレグ14

面白い。それは...私のGmailアカウントのためではなく、私のGoogleアプリアカウントで動作します
epeleg

2
ISFORMULA()が文書化されました。support.google.com/docs/answer/6270316?hl=ja
ルベン

2

ISFORMULA()Googleから隠された組み込み関数があるようです。自分の機能を削除しても、まだ機能していることに気付きました。新しいスプレッドシートで試しましたが、まだ動作します。キャッシュの問題はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.