Dynamic Hyperlink dentro de uma função IF

0

Então, normalmente, não publico sites como esses, mas os uso com frequência. Muito obrigado se eu aparecesse aqui apenas para aumentar meu aprendizado. Estou muito frustrada hoje à noite no entanto. Aqui está o meu desafio: Estou aninhando uma fórmula de hiperlink dentro de uma declaração if para um log digital que eu criei com base em se sua informação já foi inserida no log. Se estiver, vincule-se à próxima linha de entrada de dados; se não for, vincule à primeira linha. Eu criei a fórmula com sucesso usando vários links, no entanto, eu não consigo fazê-lo funcionar se a fórmula é baseada em um número único que está sendo colocado em outra célula (sendo o nome da folha dinâmica que eu quero alcançar). O número é um número em uma bandeja vazia e as folhas são nomeadas com o referido número. Preciso usar uma fórmula de hiperlink em vez de centenas, para que meu programa tenha uma interface dinâmica e sustentável que não me obrigue a atualizá-lo toda vez que nossa organização adicionar mais suprimentos.

Este é um exemplo da fórmula que funciona:

=IF('1016'!$J$7="", HYPERLINK("#'1016'!$J$7",""), HYPERLINK("#INDEX('1016'!$j$7:$j$56,MATCH(999999,'1016'!$j$7:$j$56,1)+1)",""))

Isso é o que está me dando mais cabelos grisalhos enquanto falo:

=IF('"&X2&"'!$J$7="", HYPERLINK("#'"&X2&"'!$J$7",""), HYPERLINK("#INDEX('"&X2&"'!$j$7:$j$56,MATCH(999999,'"&X2&"'!$j$7:$j$56,1)+1)",""))

Assim, a parte & X2 & ... da fórmula é basicamente o número de caixa que um usuário pode inserir em uma célula e a fórmula será vinculada ao log dessa caixa. A foto deles é na verdade uma imagem que eu colei no fundo das folhas, parecendo fazer com que a imagem pareça o link para clicar no meu "" nome amigável em branco.

O que é tão frustrante é que ambas as condições do hiperlink funcionam bem sozinhas, mas quando eu conecto a mesma sintaxe exata na parte lógica da função if, o link da planilha não funcionará se o log de entrada de dados estiver vazio. Acredito que tenha conseguido estabelecer uma ligação com a parte falsa da minha declaração if, mas, não importa o que eu tente, não consigo fazer com que a verdadeira parte da minha declaração if funcione. Ou recebo uma mensagem dizendo que o link é basicamente inválido, um erro #REF ou um erro #VALUE. Eu mudei meus hashes, minhas aspas, tentei concatenar funções ao invés da sintaxe acima, bebi mais, tirei pausas, você nomeou, nada parece funcionar. Estou seriamente ficando lívido neste momento. Por favor, me ajude se puder. Eu sei que deve ser uma solução simples. Obrigado novamente. Se eu precisar postar minha planilha, não terei certeza de como fazer isso neste momento. Ah, a propósito, eu procurei na web sem fim por uma resposta e parece que eu sou o único em nosso planeta tentando fazer isso e nossa organização desaprova qualquer código então por favor, não VBA. Obrigado

    
por Randy Hall 07.01.2018 / 07:27

1 resposta

0

No seu primeiro exemplo, '1016'!$J$7="" testa se o valor da célula J7 na planilha 1016 está vazio.

No seu segundo exemplo, '"&X2&"'!$J$7="" testa se o valor da célula J7 na planilha & X2 & está vazio, o que falhará se não conseguir encontrar uma planilha chamada & X2 &.

O "&" opera concatena strings, não referências de célula, portanto, para construir a referência corretamente, é preciso tratar tudo como uma string e classificar as cotações e a concatenação de acordo: "'" & X2 &"'!$J7" . No entanto, você estaria apenas testando o valor de uma string contra outra. Para converter a string em uma referência de célula, você precisa usar INDIRECT() . Algo como isso deve funcionar:

=IF( INDIRECT("'" & X2 & "'!$J$7",TRUE), true hyperlink, false hyperlink)

O parâmetro TRUE é necessário para informar INDIRECT que a string usa o estilo A1 da referência da célula, em vez da referência R1C1 padrão.

Você também precisa corrigir seus hiperlinks dinâmicos (provavelmente concatenando a string "#" na frente de sua fórmula).

    
por 07.01.2018 / 09:39