Saya mencoba membuat formula dalam spreadsheet Google yang terlihat seperti ini:
if (x < 0, x + 1, x)
Itu berarti jika x
lebih kecil dari 0
, kembali x + 1
, lain kembali x
.
Namun, x
itu sendiri adalah ekspresi, misalnya A1 + B1
. Jadi saya berakhir dengan:
if ((A1 + B1) < 0, (A1 + B1) + 1, (A1 + B1))
Bagaimana saya bisa menyimpan ekspresi (A1 + B1)
ke dalam variabel sementara x
sehingga saya bisa melakukan ini? :
x = (A1 + B1);
if (x < 0, x + 1, x);
Ekspresi saat ini di spreadsheet saya terlihat seperti ini:
if(
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
< 0,
1 +
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
,
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
)
Saya mencoba membuatnya terlihat lebih pendek dan lebih mudah dikelola seperti ini:
x = timevalue(Sheet1!$D10) - timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))));
if(
x
< 0,
1 +
x
,
x
)
google-sheets
google-apps-script
Pacerier
sumber
sumber
Jawaban:
Saya sering berakhir menggunakan sel sebagai variabel untuk perhitungan yang sering digunakan, dan sebenarnya menamai mereka menggunakan "rentang bernama". Ini membuatnya lebih mudah untuk memikirkan formula yang Anda coba kembangkan. Anda dapat menyembunyikan sel-sel itu, jika Anda tidak ingin sel-sel itu terlihat.
sumber
Jawaban singkat
Saat ini, Google Sheets tidak memiliki fitur untuk menetapkan nama ke variabel yang ditentukan oleh rumus alih-alih referensi sel atau rentang. Untuk menggunakan rumus dengan jenis variabel ini alternatifnya adalah menggunakan fungsi kustom.
Fungsi khusus di Google Sheets
Fungsi khusus didefinisikan dalam proyek yang terikat Skrip Google Apps atau add-on Google Sheets. Mereka hanya dapat digunakan untuk mengembalikan nilai, bukan untuk mengotomatisasi tugas-tugas seperti mengirim email.
Fungsi kustom seperti fungsi JavaScript dan dapat menggunakan JSDOC untuk menambahkan fitur fungsi bawaan seperti autocomplete dan untuk menampilkan pembantu rumus popup. Juga pesan kesalahan khusus dapat dimasukkan.
Dalam kasus yang disajikan dalam pertanyaan, struktur formula yang diinginkan untuk ditampilkan dalam sel harus memiliki struktur berikut
di mana
x
bisa menjadi fungsi khusus.Berikut ini adalah contoh sederhana dari fungsi kustom yang menggunakan JSDOC .
Rumus menggunakan fungsi kustom di atas dengan struktur yang ditentukan dalam pertanyaan akan terlihat dengan cara berikut
row()
dapat digunakan sebagai pengganti konstanta untuk memiliki input baris tempat formula ditempatkan.Untuk "meniru" rumus eksplisit yang disajikan dalam pertanyaan, rumus bawaan harus diganti dengan fungsi JavasScript / Google Apps Script.
Referensi
sumber
Saya berusaha melakukan ini (saya setuju itu akan menjadi fitur yang sangat berguna, terutama untuk formula panjang. Inilah yang saya tulis sejauh ini:
Secara teoritis, ini akan berguna untuk menyederhanakan formula sel yang kompleks seperti:
dalam hal ini:
Tambahan
D_VAR#'s
danVAR#'s
dapat ditulis ke dalam skrip untuk memungkinkan beberapa deklarasi variabel dan panggilan yang diperlukan.Namun, tampaknya
D_VAR0
tidak menyimpan variabel yang dibungkus dengan benar ke dalam array variabel [].Jika saya secara manual memasukkan elemen dalam array, VAR0 dapat mengaksesnya dan mengembalikannya ke sel yang aktif. Sebagai contoh:
Ini membuat saya dengan dua pertanyaan. Jika yang berikut ini mungkin, maka saya pikir mungkin untuk mendeklarasikan dan memanggil variabel sementara melalui fungsi khusus:
Jika fungsi khusus dapat mengakses elemen array, dapatkah mereka juga menyimpan elemen ke array? Jika ya, bagaimana caranya?
Jika fungsi khusus dapat menyimpan elemen ke array, apakah itu hanya dapat diakses dalam rumus yang sama di sel yang sama? Atau mungkinkah mengakses variabel tersimpan yang sama di sel yang berbeda? Contoh:
Cell A1 = D_VAR0(sum(3,5))
Cell D4 = VAR0() //would this return 8 in cell D4? It hasn't worked in my testing.
sumber