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?

epeleg
fonte

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

Jacob Jan Tuinstra
fonte
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

Jacob Jan Tuinstra
fonte
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.

Juan Pérez
fonte