Sungguh aneh bahwa saya belum melihat ini, karena Excel tampaknya menjadi bahasa yang valid untuk kode golf (meskipun 'kompiler' tidak gratis).
Excel agak wildcard dalam bermain golf, pandai bermain tantangan kompleksitas menengah, dan terkadang juga tantangan yang lebih sederhana. Lebih sering daripada tidak, Excel pandai menghadapi tantangan dengan manipulasi string dan manipulasi nomor string campuran.
Apa tips umum yang Anda miliki untuk bermain golf di Excel? Saya mencari ide yang dapat diterapkan pada masalah kode golf secara umum yang setidaknya agak spesifik untuk Excel (BUKAN VBA). Tolong, satu tip per jawaban.
Jawaban:
Referensi singkat:
Jika program Anda diminta untuk mengambil banyak input, Anda mungkin ingin mengambil semuanya sekaligus. untuk membaca banyak sel sebagai array, seseorang dapat melakukannya seperti contoh:
Contoh:
=len(A1)+Len(B1)+LEN(C1)
bisa jadi
=SUM(LEN(A1:C1))
=SUM(LEN(A1:C1 A2:C2 A3:C3))
bisa jadi
=SUM(LEN(A1:C3))
=SUM(LEN(A1:A1024))
bisa jadi
=SUM(LEN(A:A))
=SUM(LEN(A:A B:B C:C))
bisa jadi
=SUM(LEN(A:C))
sumber
Steno gabungan:
The
CONCATENATE
fungsi dapat diganti dengan&
simbol 100% dari waktu, selama argumen pertama adalah string, atau sel.contoh:
=CONCATENATE(A1,B1)
bisa disingkat menjadi
=A1&B1
sumber
Vektorisasi dengan Array
Setiap kali suatu fungsi mengambil array sebagai argumen alih-alih singleton, fungsi itu juga akan menampilkan array dengan nilai hasil ke indecies yang sesuai.
Contoh:
=LEN(A1)+LEN(B2)+LEN(C3)
bisa diganti dengan
=SUM(LEN({A1,B2,C3}))
sumber
Mengubah Nomor menjadi Teks:
Ini adalah tip yang sangat sederhana, tetapi mungkin berguna untuk beberapa ...
1&23
).A1
), ubah Format Angka sel menjadi Teks untuk menghilangkan kebutuhan akan byte tambahan.Grafik Referensi Cepat:
sumber
Vektorisasi array sel:
Tip Vectorization with arrays Menunjukkan bagaimana Anda dapat menurunkan fungsi dengan array dengan menggunakan pemformatan khusus dalam array. Dimungkinkan untuk melakukan hal yang sama dengan sel, dan akan menghemat banyak byte dalam jangka panjang. Katakanlah Anda memiliki lembar berikut:
Dan kami ingin menemukan umur simpan tertinggi dari buah.
Tanpa Vektorisasi, seseorang dapat menggunakan dua rumus seperti:
Dan ini memang memberikan jawaban yang benar, tetapi Skor untuk golf ini tidak konvensional, dan mungkin tidak akan diterima secara luas. Selain itu, ini menggunakan fungsi drag down (Ew), yang membuat jawaban membingungkan.
Sebagai gantinya, Kita bisa menempatkan fungsi di kolom D langsung dengan rumus di E2. Untuk melakukan ini, Anda mengganti (dalam hal ini B2 dan C2) variabel Anda dengan array untuk rentang yang ingin Anda uji. Dengan demikian, formula Anda menjadi:
Ini menghemat beberapa byte sekaligus membuat entri Anda layak skor.
sumber
Singkatan Boolean:
Alih-alih menggunakan
=TRUE()
dan=FALSE()
fungsi, gunakan=1=1
dan=1=2
.sumber
ISBLANK () Singkatan:
Alih-alih menggunakan
=ISBLANK(A1)
, gunakan=A1=0
untuk menentukan apakah sel (yaituA1
) kosong.Catatan: Pintasan ini tidak akan berfungsi jika sel
A1
berisi0
. Dalam hal ini, Anda harus menggunakannya=A1=""
.sumber
Persingkat nama sheet
Jika Anda mengganti nama
Sheet2
menjadiS
referensiSheet2!a0
menjadiS!a0
.sumber