Dicas para jogar golfe no Excel?


20

É estranho que eu não tenha visto isso, pois o Excel parece ser uma linguagem válida para o código de golfe (apesar de seu 'compilador' não ser gratuito).

O Excel é um curinga no golfe, sendo bom em desafios de média complexidade e, às vezes, em desafios mais simples. Na maioria das vezes, o Excel é bom em desafios com manipulação de strings e manipulação mista de número de strings.

Que dicas gerais você tem para jogar golfe no Excel? Estou procurando idéias que possam ser aplicadas para codificar problemas de golfe em geral que sejam pelo menos um pouco específicos para o Excel (NÃO para o VBA). Por favor, uma dica por resposta.


4
aparentemente autômatos celulares não é algo relacionado ao excel ... :(

Eu queria saber se é válido criar um UDF com VBA?
Danieltakeshi # 16/17

11
@danieltakeshi - não; bem, não como uma resposta do Excel - se você usar o Excel VBA e depois chamá-lo da janela imediata, a folha de atividades ou uma sub-rotina, que geralmente é considerada válida
Taylor Scott

Respostas:


11

Referência abreviada:

Se for necessário que seu programa receba várias entradas, convém reuni-las todas de uma vez. para ler várias células como uma matriz, pode-se fazer o exemplo:

Exemplo:
=len(A1)+Len(B1)+LEN(C1)
poderia ser
=SUM(LEN(A1:C1))

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

=SUM(LEN(A1:A1024))
poderia ser
=SUM(LEN(A:A))

=SUM(LEN(A:A B:B C:C))
poderia ser
=SUM(LEN(A:C))


11
Sei que essa não é uma ótima dica, mas é específica o suficiente para se destacar e achei que deveria ser incluída.

9

Concatenar taquigrafia:

A CONCATENATEfunção pode ser substituída pelo &símbolo 100% do tempo, desde que o primeiro argumento seja uma sequência ou célula.

exemplo:
=CONCATENATE(A1,B1)
poderia ser reduzido para
=A1&B1


9

Vetorização com matrizes

Sempre que uma função usa uma matriz como argumento em vez de um singleton, essa função também gera uma matriz com o valor resultante para as indecies correspondentes.

Exemplo:
=LEN(A1)+LEN(B2)+LEN(C3)
poderia ser substituído por
=SUM(LEN({A1,B2,C3}))


11
Esse processo geralmente é chamado de "vetorização" se minha memória me serve bem.
Conor O'Brien

@ ConorO'Brien Obrigado! Eu mudei minha resposta!

2

Convertendo um número em texto:

Esta é uma dica muito simples, mas pode ser útil para alguns, no entanto ...

  • Se você precisar converter um número em texto de uma fórmula, use o operador de concatenação para unir duas partes do número como uma sequência (ou seja 1&23).
  • Se você precisar converter um número em texto para uso por referência de célula (ou seja A1), altere o Formato numérico da célula para Texto para eliminar a necessidade de bytes extras.
  • Veja a tabela abaixo para obter uma comparação dos métodos de número para texto.

Tabela de referência rápida:

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

Vetorização de matrizes de células:

A dica Vetorização com matrizes Mostra como você pode aprimorar uma função com uma matriz usando formatação específica dentro da matriz. É possível fazer o mesmo com as células e economizará muitos bytes a longo prazo. Digamos que você tenha a seguinte planilha:

folha de exemplo

E queremos encontrar a maior vida útil de uma fruta.

Sem vetorização, pode-se usar as duas fórmulas da seguinte forma: insira a descrição da imagem aqui

E isso dá uma resposta correta, mas a pontuação para este golfe não é convencional e provavelmente não será aceita como amplamente. Além disso, isso usa uma função de arrastar para baixo (Ew), que gera uma resposta confusa.

Em vez disso, podemos colocar a função na coluna D diretamente com a fórmula em E2. Para fazer isso, você substitui (neste caso, B2 e C2) suas variáveis ​​por matrizes para o intervalo que deseja testar. Assim, sua fórmula se torna:
insira a descrição da imagem aqui

Isso economiza alguns bytes, além de tornar sua entrada com pontuação adequada.


1

Taquigrafia booleana:

Em vez de usar as funções =TRUE()e =FALSE(), use =1=1e =1=2.


0

ISBLANK () taquigrafia:

Em vez de usar =ISBLANK(A1), use =A1=0para determinar se uma célula (ou seja A1) está vazia.

Nota: Este atalho não funcionará se a célula A1 contiver 0 . Nesse caso, você precisará usar =A1="" .


0

Encurtar nomes de planilhas

Se você renomear Sheet2para, Sentão as referências se Sheet2!a0tornarão S!a0.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.