Wskazówki dotyczące gry w golfa w programie Excel?

20

Dziwne, że tego nie widziałem, ponieważ Excel wydaje się być poprawnym językiem do gry w golfa kodu (mimo że jego kompilator nie jest darmowy).

Excel jest nieco dziką kartą w golfie, jest dobry w golfowych wyzwaniach o średniej złożoności, a czasem także w prostszych wyzwaniach. Najczęściej Excel doskonale radzi sobie z wyzwaniami związanymi z manipulowaniem ciągami i mieszanymi liczbami.

Jakie masz ogólne wskazówki dotyczące gry w golfa w programie Excel? Szukam pomysłów, które można zastosować do ogólnych problemów z kodowaniem golfa, które są przynajmniej nieco specyficzne dla programu Excel (NIE VBA). Proszę, jedna wskazówka na odpowiedź.

Taylor Scott
źródło
4
najwyraźniej automaty komórkowe nie są związane z
Zastanawiałem się, czy utworzenie UDF przy pomocy VBA jest poprawne ?
danieltakeshi
1
@danieltakeshi - nie; cóż, nie jako odpowiedź Excela - jeśli zamiast tego użyjesz Excel VBA, a następnie wywołasz go z bezpośredniego okna, arkusza aktywnego lub podprogramu, który ogólnie uważa za ważny
Taylor Scott

Odpowiedzi:

11

Skrót referencyjny:

Jeśli twój program wymaga wielu danych wejściowych, możesz chcieć mieć je wszystkie na raz. aby odczytać wiele komórek jako tablicę, można zrobić tak jak w przykładzie:

Przykład:
=len(A1)+Len(B1)+LEN(C1)
może być
=SUM(LEN(A1:C1))

=SUM(LEN(A1:C1 A2:C2 A3:C3))
możliwe
=SUM(LEN(A1:C3))

=SUM(LEN(A1:A1024))
możliwe
=SUM(LEN(A:A))

=SUM(LEN(A:A B:B C:C))
możliwe
=SUM(LEN(A:C))


źródło
1
Wiem, że to nie jest świetna wskazówka, ale jest wystarczająco szczegółowa, aby wyróżnić się w przekonaniu, że należy ją uwzględnić.
9

Skrócony skrót:

CONCATENATEFunkcja może być zastąpiony przez &symbol 100% czasu tak długo, jak pierwszy argument jest łańcuch, lub komórki.

przykład:
=CONCATENATE(A1,B1)
może być skrócony do
=A1&B1


źródło
9

Wektoryzacja za pomocą tablic

Ilekroć funkcja przyjmuje tablicę jako argument zamiast singletonu, funkcja ta również wyśle ​​tablicę z wartością wynikową do odpowiednich indecies.

Przykład:
=LEN(A1)+LEN(B2)+LEN(C3)
można zastąpić
=SUM(LEN({A1,B2,C3}))


źródło
1
Ten proces jest zwykle nazywany „wektoryzacją”, jeśli dobrze mi służy pamięć.
Conor O'Brien
@ ConorO'Brien Thanks! Zmieniłem odpowiedź!
2

Konwertowanie liczby na tekst:

To bardzo prosta wskazówka, ale może być przydatna dla niektórych ...

  • Jeśli chcesz przekonwertować liczbę na tekst z formuły, użyj operatora konkatenacji, aby połączyć dwie części liczby jako ciąg (tj 1&23.).
  • Jeśli chcesz przekonwertować liczbę na tekst w celu użycia przez odwołanie do komórki (tj. A1), Zmień Format liczbowy komórki na Tekst, aby wyeliminować potrzebę dodatkowych bajtów.
  • Zobacz tabelę poniżej, aby porównać metody numerowania z tekstem.

Skrócona tabela referencyjna:

+-------------------------------------------------------------------------------------+
|   | 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
źródło
1

Wektoryzacja tablic komórek:

Wskazówka Wektoryzacja za pomocą tablic Pokazuje, jak można zagrać w golfa w funkcji za pomocą tablicy, używając określonego formatowania w tablicy. To samo można zrobić z komórkami i na dłuższą metę zaoszczędzisz wiele bajtów. Powiedz, że masz następujący arkusz:

przykładowy arkusz

I chcemy znaleźć najwyższy okres przechowywania owoców.

Bez wektoryzacji można użyć dwóch takich formuł: wprowadź opis zdjęcia tutaj

I to daje poprawną odpowiedź, ale Wynik dla tego golfa jest niekonwencjonalny i prawdopodobnie nie zostanie zaakceptowany tak szeroko. Ponadto wykorzystuje funkcję przeciągania (Ew), co stanowi mylącą odpowiedź.

Zamiast tego możemy umieścić funkcję w kolumnie D bezpośrednio w formule w E2. Aby to zrobić, zamień (w tym przypadku B2 i C2) zmienne na tablice dla zakresu, który chcesz przetestować. W ten sposób twoja formuła staje się:
wprowadź opis zdjęcia tutaj

Pozwala to zaoszczędzić kilka bajtów, a także zapewnić poprawną ocenę wyników.

Społeczność
źródło
1

Skrót boolowski:

Zamiast korzystać z funkcji =TRUE()i =FALSE(), użyj =1=1i =1=2.

Grant Miller
źródło
0

ISBLANK () Stenografia:

Zamiast używać =ISBLANK(A1)użyj, =A1=0aby ustalić, czy komórka (tj. A1) Jest pusta.

Uwaga: ten skrót nie będzie działać, jeśli komórka A1 zawiera 0 . W takim przypadku będziesz musiał użyć =A1="" .

Grant Miller
źródło
0

Skróć nazwy arkuszy

Jeśli zmienisz nazwę Sheet2na, Swtedy odniesienia będą Sheet2!a0się zmieniać S!a0.

sufitowy
źródło