Excel'de golf oynamak için ipuçları?


20

Excel'in kod golfü için geçerli bir dil gibi göründüğü garip bir şey ('derleyici' özgür olmamasına rağmen).

Excel, golf konusunda bir tür joker karakterdir, orta karmaşıklıktaki golf zorluklarında iyi ve bazen de daha basit zorluklardır. Çoğu zaman, Excel dize manipülasyonu ve karışık dize numarası manipülasyonu ile ilgili zorluklarda iyidir.

Excel'de golf oynamak için hangi genel ipuçlarınız var? Genel olarak en azından biraz Excel (NOT VBA) belirli olan golf sorunları kod uygulanabilir uygulanabilir fikirler arıyorum. Lütfen cevap başına bir ipucu.


4
Görünüşe göre hücresel otomata excel ile ilgili bir şey değil ... :(

VBA ile bir UDF oluşturmanın geçerli olup olmadığını merak ediyordum ?
danieltakeshi

1
@danieltakeshi - hayır; Peki, bir Excel yanıtı olarak değil - Excel VBA'yı kullanırsanız ve hemen geçerli pencereden, etkin sayfadan veya alt programdan çağırırsanız, genel olarak geçerli olarak kabul edilir
Taylor Scott

Yanıtlar:


11

Referans kısayolu:

Programınızın birden fazla giriş alması gerekiyorsa, hepsini bir kerede toplamak isteyebilirsiniz. bir dizi olarak birden çok hücre okumak için, örnek şu şekilde yapılabilir:

Örnek:
=len(A1)+Len(B1)+LEN(C1)
olabilir
=SUM(LEN(A1:C1))

=SUM(LEN(A1:C1 A2:C2 A3:C3))
olabilirdi
=SUM(LEN(A1:C3))

=SUM(LEN(A1:A1024))
olabilirdi
=SUM(LEN(A:A))

=SUM(LEN(A:A B:B C:C))
olabilirdi
=SUM(LEN(A:C))


1
Bunun harika bir ipucu olmadığını biliyorum , ancak dahil edilmesi gerektiğini düşündüğüm kadar başarılı olacak kadar özel.

9

Stenoyu bitiştir:

CONCATENATEFonksiyonu ile ikame edilmiş olabilir &, böylece uzun bir ilk bağımsız bir dize veya hücre olduğu zaman, sembol,% 100.

örnek:
=CONCATENATE(A1,B1)
kısaltılabilir
=A1&B1


9

Dizilerle Vektörizasyon

Bir işlev bir diziyi tekil yerine bağımsız değişken olarak aldığında, bu işlev sonuç değerlerine sahip bir diziyi karşılık gelen dizinlere de verir.

Örnek:
=LEN(A1)+LEN(B2)+LEN(C3)
ile değiştirilebilir
=SUM(LEN({A1,B2,C3}))


1
Hafızam bana iyi hizmet ediyorsa bu işleme genellikle "vektörleştirme" denir.
Conor O'Brien

@ ConorO'Brien Teşekkürler! Cevabımı değiştirdim!

2

Bir Sayıyı Metne Dönüştürme:

Bu çok basit bir ipucu, ancak yine de bazılarına faydalı olabilir ...

  • Bir sayıyı formül içindeki metne dönüştürmeniz gerekiyorsa, numaranın iki parçasını dize (ie 1&23) olarak birleştirmek için birleştirme işlecini kullanın .
  • Bir sayıyı hücre başvurusu (örn. A1) Tarafından kullanılmak üzere metne dönüştürmeniz gerekiyorsa, fazladan bayt ihtiyacını ortadan kaldırmak için hücrenin Sayı Biçimini Metin olarak değiştirin.
  • Sayıdan metne yöntemlerinin karşılaştırması için aşağıdaki tabloya bakın.

Hızlı Referans Tablosu:

+-------------------------------------------------------------------------------------+
|   | 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.

1

Hücre dizilerinin vektörleştirilmesi:

Dizilerle Vektörleştirme ipucu Dizideki belirli biçimlendirmeyi kullanarak bir dizideki bir işlevi nasıl golf oynayabileceğinizi gösterir. Aynı şeyi hücrelerle yapmak da mümkündür ve uzun vadede size birçok bayt kazandıracaktır. Aşağıdaki sayfaya sahip olduğunuzu varsayalım:

örnek sayfa

Ve bir meyvenin en yüksek raf ömrünü bulmak istiyoruz.

Vectorization olmadan, şu iki formül kullanılabilir: resim açıklamasını buraya girin

Ve bu doğru bir cevap veriyor, ancak bu golf için Puan Alışılmadık ve muhtemelen geniş ölçüde kabul edilmeyecek. Bunun üzerine, kafa karıştırıcı bir cevap veren bir aşağı sürükleme işlevi (Ew) kullanır.

Bunun yerine, işlevi D sütununa E2'deki formülle yerleştirebiliriz. Bunu yapmak için, (bu durumda B2 ve C2) değişkenlerinizi test etmek istediğiniz aralık için dizilerle değiştirirsiniz. Böylece formülünüz şöyle olur:
resim açıklamasını buraya girin

Bu size birkaç bayt kazandırır ve girişinizi doğru şekilde puanlanabilir hale getirir.


1

Boole Stenografi:

Bunun yerine kullanmanın =TRUE()ve =FALSE()fonksiyonlarını, kullanımı =1=1ve =1=2.


0

ISBLANK () Kestirme:

Kullanmak yerine, bir hücrenin (yani ) boş olup olmadığını belirlemek için =ISBLANK(A1)kullanın .=A1=0A1

Not: Hücre A1 içeriyorsa bu kısayol çalışmaz0 . Bu durumda, kullanmanız gerekecektir =A1="" .


0

Sayfa adlarını kısalt

Eğer adını Sheet2değiştirirseniz Sreferanslar Sheet2!a0haline gelir S!a0.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.