Es ist seltsam, dass ich das nicht gesehen habe, da Excel eine gültige Sprache für das Code-Golfen zu sein scheint (obwohl sein 'Compiler' nicht frei ist).
Excel ist eine Art Joker beim Golfen, denn es kann Herausforderungen mittlerer Komplexität und manchmal auch einfachere Herausforderungen meistern. In den meisten Fällen kann Excel mit der Manipulation von Zeichenfolgen und der Manipulation von gemischten Zeichenfolgen gut umgehen.
Welche allgemeinen Tipps haben Sie zum Golfen in Excel? Ich bin auf der Suche nach Ideen, die allgemein auf Code-Golfprobleme angewendet werden können, die zumindest etwas Excel-spezifisch sind (NICHT VBA). Bitte einen Tipp pro Antwort.
Antworten:
Referenzkürzel:
Wenn für Ihr Programm mehrere Eingaben erforderlich sind, möchten Sie möglicherweise alle auf einmal abrufen können. Um mehrere Zellen als Array zu lesen, könnte man folgendes tun:
Beispiel:
=len(A1)+Len(B1)+LEN(C1)
könnte sein
=SUM(LEN(A1:C1))
=SUM(LEN(A1:C1 A2:C2 A3:C3))
könnte sein
=SUM(LEN(A1:C3))
=SUM(LEN(A1:A1024))
könnte sein
=SUM(LEN(A:A))
=SUM(LEN(A:A B:B C:C))
könnte sein
=SUM(LEN(A:C))
quelle
Verketten Sie die Kurzform:
Die
CONCATENATE
Funktion kann zu&
100% durch das Symbol ersetzt werden, sofern das erste Argument eine Zeichenfolge oder eine Zelle ist.Beispiel:
=CONCATENATE(A1,B1)
könnte auf gekürzt werden
=A1&B1
quelle
Vektorisierung mit Arrays
Wenn eine Funktion anstelle eines Singletons ein Array als Argument verwendet, gibt diese Funktion auch ein Array mit dem Ergebniswert an die entsprechenden Indecies aus.
Beispiel:
=LEN(A1)+LEN(B2)+LEN(C3)
könnte durch ersetzt werden
=SUM(LEN({A1,B2,C3}))
quelle
Eine Zahl in Text umwandeln:
Dies ist ein sehr einfacher Tipp, der jedoch für manche nützlich sein kann ...
1&23
) zu verbinden.A1
), ändern Sie die Nummer Format der Zelle Text die Notwendigkeit für zusätzliches Bytes zu beseitigen.Kurzübersicht:
quelle
Vektorisierung von Arrays von Zellen:
Der Tipp Vektorisierung mit Arrays Zeigt, wie Sie eine Funktion mit einem Array unter Verwendung einer bestimmten Formatierung innerhalb des Arrays optimieren können. Es ist möglich, dasselbe mit Zellen zu tun und auf lange Sicht viele, viele Bytes zu sparen. Angenommen, Sie haben das folgende Blatt:
Und wir wollen die höchste Haltbarkeit einer Frucht finden.
Ohne Vektorisierung könnte man die beiden Formeln folgendermaßen verwenden:
Und dies gibt eine korrekte Antwort, aber der Score für diesen Golf ist unkonventionell und wird wahrscheinlich nicht so weit verbreitet akzeptiert. Darüber hinaus wird eine Drag-Down-Funktion (Ew) verwendet, die für eine verwirrende Antwort sorgt.
Stattdessen können wir die Funktion in Spalte D direkt mit der Formel in E2 einfügen. Dazu ersetzen Sie (in diesem Fall B2 und C2) Ihre Variablen durch Arrays für den Bereich, den Sie testen möchten. So wird Ihre Formel:
Dies spart Ihnen ein paar Bytes und macht Ihren Eintrag richtig auswertbar.
quelle
Boolesche Kurzform:
Anstatt die Funktionen
=TRUE()
und zu=FALSE()
verwenden, verwenden Sie=1=1
und=1=2
.quelle
ISBLANK () Kurzform:
Anstelle der Verwendung
=ISBLANK(A1)
, Verwendung=A1=0
zu bestimmen, ob eine Zelle (dhA1
) leer ist.Hinweis: Diese Verknüpfung funktioniert nicht, wenn die Zelle
A1
enthält0
. In diesem Fall müssen Sie verwenden=A1=""
.quelle
Kürzen Sie die Blattnamen
Wenn Sie benennen ,
Sheet2
umS
dann Verweise aufSheet2!a0
gewordenS!a0
.quelle