Procurando uma fórmula "isFormula" para as planilhas do Google


13

Existe uma função que informa se uma célula específica tem um valor simples (inserido manualmente) ou tem uma fórmula?

Respostas:


5

Com este pequeno trecho, você pode fazer isso.

Código

function isFormula(startcol, startrow) {
  // prepare string
  var str = String.fromCharCode(64 + startcol) + startrow;

  // retrieve formula
  var fCell = SpreadsheetApp.getActiveSpreadsheet()
    .getRange(str).getFormula();

  // return false if empty else true 
  return fCell ? true : false;
}

Uso

insira a descrição da imagem aqui

Em esta resposta , Tom Horwood encontrou uma maneira de contornar o uso de aspas.

Exemplo

Adicione o script em Ferramentas> Editor de scripts e pressione o botão de bug para ativar a autenticação.

Eu criei um arquivo de exemplo para você: verifique a fórmula


Eu estava vagando ... Sua função é realmente obter uma string que é o endereço de uma célula isFormula2("A1"). então tentei criar uma nova versão assim: function isFormula2(cell) { return (cell.getFormula())!=""; } e esperava que fosse possível usar usando, isFormula2(A1)mas isso não parece funcionar e, ao tentar depurar, é mostrado cellcomo indefinido ... alguma idéia do porquê disso e se as coisas poderiam ser mudou para que ele funcione com em f(A1)vez de f("A1")?
epeleg 24/01

@epeleg Veja minha resposta revisada.
Jacob Jan Tuinstra

:) então você mudou para que, em vez de obter o endereço, agora obtenha uma coluna e uma linha. aqui não existe uma sintaxe tal que a chamada seria apenas isFormula(a1)? (em MS excel seria uma função que recebe um parâmetro de intervalo)
epeleg

@epeleg O mais próximo é isFormula_1 ("A2: A2") , veja o meu exemplo de arquivo. As funções personalizadas funcionam dessa maneira. Sem as aspas, você receberá o valor. Entre aspas, a sequência, que pode ser usada como tal, mas não pode ser copiada / colada. A solução COLUMN and ROW é apenas uma solução alternativa (inevitavelmente).
: 26660 Jan Jacob Tuinstra

qual seria o valor que uma função personalizada obteria se você a chamasse com isFormula (a1: a1)? e quanto à isFormula (a1: b2)?
epeleg

9

Resposta curta

Use a função interna ISFORMULA () .

Antecedentes e explicação

Acho que acabei de descobrir uma fórmula não documentada nas novas planilhas do Google. A @Pnuts estava dizendo que a CELLfórmula não funcionava (parcialmente porque está disponível apenas nas novas planilhas do Google), então copiei o código em uma nova planilha do Google. Ocorreu um erro ao me dizer que minha fórmula (personalizada) aceita apenas um argumento e não dois:
insira a descrição da imagem aqui

Renomear o isFormulapara outra coisa resultou em uma função personalizada de trabalho. Depois disso, criei outra planilha do Google e usei a isFormulafórmula. A fórmula não aparece no preenchimento automático, mas está funcionando:
insira a descrição da imagem aqui

Portanto, se a fórmula estiver disponível em todas as novas planilhas do Google, essa seria a melhor resposta:

Fórmula

=isFormula(A1)

Nota

Disponível apenas nas novas Planilhas Google. Pedi a algumas outras pessoas para confirmar a nova fórmula e está confirmada. Como não está documentado, sua implementação é incerta e pode desaparecer. O ARRAYFORMULAnão funciona quando usado com esta nova fórmula.

Exemplo

Eu criei um arquivo de exemplo para você: isFormula


legais. parece que o Google está adotando minha recomendação :) Mas como alterno para as "Novas planilhas do Google"?
epeleg 9/07/2014

interessante. ele funciona para a minha conta do gmail, mas não nos meus conta do Google Apps ...
epeleg

2
ISFORMULA () agora está documentado. Consulte support.google.com/docs/answer/6270316?hl=pt-BR
Rubén

2

Parece que existe uma função interna oculta ISFORMULA()do Google. Percebi quando excluí minha própria função e ainda estava funcionando. Eu tentei em uma nova planilha e ainda funciona. Nenhum problema de cache.

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.