Estou tentando criar uma fórmula em uma planilha do Google que se parece com isso:
if (x < 0, x + 1, x)
Significa se x
é menor que 0
, return x + 1
, else return x
.
No entanto, em x
si é uma expressão, por exemplo A1 + B1
. Então acabei com:
if ((A1 + B1) < 0, (A1 + B1) + 1, (A1 + B1))
Como posso salvar a expressão (A1 + B1)
em uma variável temporária para x
que eu possa fazer isso? :
x = (A1 + B1);
if (x < 0, x + 1, x);
A expressão atual na minha planilha é assim:
if(
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
< 0,
1 +
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
,
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
)
Estou tentando fazer com que pareça mais curto e mais gerenciável assim:
x = timevalue(Sheet1!$D10) - timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))));
if(
x
< 0,
1 +
x
,
x
)
google-sheets
google-apps-script
Pacerier
fonte
fonte
Respostas:
Costumo usar células como variáveis para cálculos usados com freqüência, e na verdade os nomeio como "intervalos nomeados". Isso facilita a reflexão sobre a fórmula que você está tentando desenvolver. Você pode ocultar essas células, se não quiser que elas sejam vistas.
fonte
Resposta curta
No momento, o Planilhas Google não tem um recurso para atribuir um nome a uma variável definida por uma fórmula, em vez de uma referência de célula ou intervalo. Para usar uma fórmula com esses tipos de variáveis, a alternativa é usar funções personalizadas.
Funções personalizadas no Planilhas Google
As funções personalizadas são definidas nos projetos vinculados aos scripts do Google Apps ou nos complementos do Planilhas Google. Eles só poderiam ser usados para retornar valores, não para automatizar tarefas como enviar um email.
Uma função customizada é como uma função JavaScript e pode usar o JSDOC para adicionar recursos de funções integradas, como preenchimento automático e exibir o auxiliar de fórmula pop-up. Também uma mensagem de erro personalizada pode ser incluída.
No caso apresentado na pergunta, a estrutura desejada da fórmula a ser mostrada em uma célula deve ter a seguinte estrutura
Onde
x
poderia ser uma função personalizada.A seguir, é apresentado um exemplo simples de uma função customizada que usa JSDOC .
A fórmula que utiliza a função personalizada acima com a estrutura especificada na pergunta terá a seguinte aparência:
row()
pode ser usado em vez de uma constante para ter como entrada a linha em que a fórmula é colocada.Para "emular" a fórmula explícita apresentada na pergunta, as fórmulas internas devem ser substituídas pelas funções JavasScript / Script do Google Apps.
Referências
fonte
Estou fazendo algumas tentativas para isso (concordo que seria um recurso muito útil, especialmente para fórmulas longas. Aqui está o que escrevi até agora:
Teoricamente, isso seria útil para simplificar uma fórmula celular complexa, como:
nisso:
Adicional
D_VAR#'s
eVAR#'s
pode ser gravado no script para permitir várias declarações e chamadas de variáveis, conforme necessário.No entanto, parece que
D_VAR0
não armazena corretamente a variável agrupada na matriz de variáveis [].Se eu inserir manualmente um elemento na matriz, o VAR0 poderá acessá-lo e devolvê-lo à célula ativa. Por exemplo:
Isso me deixa com duas perguntas. Se o seguinte for possível, acho que é possível declarar e chamar variáveis temporárias por meio de uma função personalizada:
Se funções personalizadas puderem acessar elementos da matriz, elas também poderão armazenar elementos em uma matriz? Se sim, como?
Se funções personalizadas puderem armazenar elementos em uma matriz, elas serão acessíveis apenas na mesma fórmula contígua na mesma célula? Ou é possível acessar a mesma variável armazenada em uma célula diferente? Exemplo:
Cell A1 = D_VAR0(sum(3,5))
Cell D4 = VAR0() //would this return 8 in cell D4? It hasn't worked in my testing.
fonte