Kiat untuk bermain golf di Excel?

20

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.

Taylor Scott
sumber
4
rupanya seluler-automata bukanlah sesuatu yang terkait dengan excel ... :(
Saya bertanya-tanya apakah valid membuat UDF dengan VBA?
danieltakeshi
1
@danieltakeshi - no; baik, bukan sebagai jawaban Excel - jika Anda menggunakan Excel VBA dan kemudian memanggilnya dari jendela langsung, lembar aktif atau subrutin, yang umumnya dianggap valid
Taylor Scott

Jawaban:

11

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
1
Saya tahu ini bukan tip yang bagus , tetapi cukup spesifik untuk unggul bahwa saya pikir itu harus dimasukkan.
9

Steno gabungan:

The CONCATENATEfungsi dapat diganti dengan &simbol 100% dari waktu, selama argumen pertama adalah string, atau sel.

contoh:
=CONCATENATE(A1,B1)
bisa disingkat menjadi
=A1&B1


sumber
9

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
1
Proses ini biasanya disebut "vektorisasi" jika ingatan saya baik.
Conor O'Brien
@ ConorO'Brien Terima kasih! Saya mengubah jawaban saya!
2

Mengubah Nomor menjadi Teks:

Ini adalah tip yang sangat sederhana, tetapi mungkin berguna untuk beberapa ...

  • Jika Anda perlu mengonversi angka menjadi teks dari dalam rumus, gunakan operator gabungan untuk menggabungkan dua bagian angka sebagai string (yaitu 1&23).
  • Jika Anda perlu mengonversi angka menjadi teks untuk digunakan dengan referensi sel (yaitu A1), ubah Format Angka sel menjadi Teks untuk menghilangkan kebutuhan akan byte tambahan.
  • Lihat tabel di bawah ini untuk perbandingan metode angka ke teks.

Grafik Referensi Cepat:

+-------------------------------------------------------------------------------------+
|   | A               | B        | C         | D                | E                   |
|-------------------------------------------------------------------------------------|
| 1 | Formula         | Bytes    | Result    | ISTEXT(cell)¹    | ISTEXT(formula)²    |
|-------------------------------------------------------------------------------------|
| 2 | =TEXT(123,0)    | 12       | 123       | TRUE             | TRUE                |
| 3 | ="123"          | 6        | 123       | TRUE             | TRUE                |
| 4 | =1&23           | 5        | 123       | TRUE             | TRUE                |
| 5 | '123            | 4        | 123       | TRUE             | NOT VALID           |
| 6 | 123             | 3        | 123       | TRUE             | FALSE               |
| 7 | 123             | 3        | 123       | FALSE            | FALSE               |
+-------------------------------------------------------------------------------------+

Note: The result for cell C6 has been formatted as text, whereas the result for C7 has not.

¹ Denotes =ISTEXT(C2), =ISTEXT(C3), =ISTEXT(C4), etc.
² Denotes =ISTEXT(TEXT(123,0)), =ISTEXT("123"), =ISTEXT(1&23), etc.
Grant Miller
sumber
1

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:

lembar contoh

Dan kami ingin menemukan umur simpan tertinggi dari buah.

Tanpa Vektorisasi, seseorang dapat menggunakan dua rumus seperti: masukkan deskripsi gambar di sini

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:
masukkan deskripsi gambar di sini

Ini menghemat beberapa byte sekaligus membuat entri Anda layak skor.

Komunitas
sumber
1

Singkatan Boolean:

Alih-alih menggunakan =TRUE()dan =FALSE()fungsi, gunakan =1=1dan =1=2.

Grant Miller
sumber
0

ISBLANK () Singkatan:

Alih-alih menggunakan =ISBLANK(A1), gunakan =A1=0untuk menentukan apakah sel (yaitu A1) kosong.

Catatan: Pintasan ini tidak akan berfungsi jika sel A1 berisi 0 . Dalam hal ini, Anda harus menggunakannya =A1="" .

Grant Miller
sumber
0

Persingkat nama sheet

Jika Anda mengganti nama Sheet2menjadi Sreferensi Sheet2!a0menjadi S!a0.

plafon
sumber