Mencari formula "isFormula" untuk Google Spreadsheets

13

Apakah ada fungsi yang akan mengetahui apakah sel tertentu memiliki nilai polos (yang dimasukkan secara manual) atau memiliki rumus?

epeleg
sumber

Jawaban:

5

Dengan potongan kecil ini Anda bisa melakukannya.

Kode

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;
}

Pemakaian

masukkan deskripsi gambar di sini

Dalam jawaban ini , Tom Horwood menemukan cara untuk menghindari penggunaan kutipan.

Contoh

Tambahkan skrip di bawah Tools> Editor skrip dan tekan tombol bug untuk mengaktifkan otentikasi.

Saya telah membuat file contoh untuk Anda: Periksa Formula

Jacob Jan Tuinstra
sumber
Saya mengembara ... Fungsi Anda sebenarnya mendapatkan string yang merupakan alamat sel isFormula2("A1"). jadi saya mencoba untuk membuat versi baru seperti ini: function isFormula2(cell) { return (cell.getFormula())!=""; } dan saya berharap itu bisa dipanggil menggunakan isFormula2(A1)tetapi ini tampaknya tidak berfungsi dan ketika mencoba untuk debug itu menunjukkan cellsebagai tidak terdefinisi ... ada ide mengapa ini dan jika semuanya bisa diubah sehingga itu akan bekerja dengan f(A1)bukan f("A1")?
epeleg
@epeleg Lihat jawaban saya yang telah direvisi.
Jacob Jan Tuinstra
:) jadi Anda mengubahnya sehingga alih-alih mendapatkan alamat itu sekarang mendapat kolom dan baris. Apakah di sini tidak ada sintaks sehingga panggilan itu hanya akan isFormula(a1)? (dalam MS excel itu akan menjadi fungsi yang mendapat parameter rentang)
epeleg
@epeleg Yang paling dekat adalah isFormula_1 ("A2: A2") , lihat contoh file saya. Fungsi kustom berfungsi seperti itu. Tanpa tanda kutip, Anda akan mendapatkan nilai. Dengan mengutip string, itu dapat digunakan seperti itu, tetapi tidak dapat disalin / ditempelkan. Solusi COLUMN dan ROW hanyalah sebuah kerja keras (pasti).
Jacob Jan Tuinstra
apa nilai yang akan didapat fungsi kustom jika Anda menyebutnya dengan isFormula (a1: a1)? dan bagaimana dengan isFormula (a1: b2)?
epeleg
9

Jawaban singkat

Gunakan fungsi built-in ISFORMULA () .

Latar Belakang dan Penjelasan

Saya pikir saya baru saja menemukan formula tidak berdokumen di Google Sheets baru. @Pnuts mengatakan CELLformula tidak berfungsi (sebagian karena hanya tersedia di Google Sheets baru), jadi saya menyalin kode ke Google Sheet baru. Terjadi kesalahan, memberi tahu saya rumus (khusus) saya hanya menerima satu argumen dan bukan dua:
masukkan deskripsi gambar di sini

Mengganti nama isFormulamenjadi sesuatu yang lain, menghasilkan fungsi kustom yang berfungsi. Setelah ini terjadi, saya membuat Google Sheet lain dan menggunakan isFormularumus. Formula tidak muncul di lengkapi-otomatis, tetapi berfungsi:
masukkan deskripsi gambar di sini

Jadi, jika formula tersedia di seluruh Google Sheets baru, maka ini akan menjadi jawaban terbaik:

Rumus

=isFormula(A1)

Catatan

Hanya tersedia di Google Sheets baru. Saya telah meminta beberapa orang untuk mengonfirmasi formula baru dan dikonfirmasi. Karena tidak terdokumentasi, implementasinya tidak pasti dan mungkin hilang. Tidak ARRAYFORMULAberfungsi saat digunakan dengan formula baru ini.

Contoh

Saya telah membuat file contoh untuk Anda: isFormula

Jacob Jan Tuinstra
sumber
bagus. sepertinya Google mengadopsi rekomendasi saya :) Tapi bagaimana cara saya beralih ke "Google Sheets Baru"?
epeleg
menarik. ini berfungsi untuk akun gmail saya tetapi tidak di akun google apps saya ...
epeleg
2
ISFORMULA () sekarang didokumentasikan. Lihat support.google.com/docs/answer/6270316?hl=id
Rubén
2

Sepertinya ada fungsi bawaan tersembunyi ISFORMULA()dari Google. Saya menyadari ketika saya menghapus fungsi saya sendiri dan masih bekerja. Saya mencobanya di spreadsheet baru dan masih berfungsi. Tidak ada masalah cache.

Juan Pérez
sumber