Função do Excel para inserir variáveis em string

1

Procurando uma maneira de alcançar o seguinte. Imagine que eu tenha 2 colunas

A    |   B
---------------
NAME |   SURNAME
---------------
Ned  | Stark
Arya | Stark
Sansa| Bolton

Gostaria que a coluna C contivesse o seguinte: "O próximo a morrer será NOME Sobrenome. Felicidades!"

para conseguir isso eu faria uma fórmula como

=concatenate(The next to die will be,A2,' ',B2,'. Cheers!')

e, em seguida, puxe para baixo todas as minhas linhas

mas este é um exemplo trivial. às vezes eu posso ter mais de 20 colunas e a string resultante é muito mais complexa. Deve haver uma maneira melhor de fazer isso? Estou pensando como um equivalente para a função c # "Format" por exemplo,

=Format('The next to die will be {0} {1}. Cheers!',A2,B2)

Alguma sugestão?

    
por Crudler 07.09.2016 / 09:39

3 respostas

1

1ª opção:

="The next to die will be "& A2 & ' '& B2 & ". Cheers!"

2ª opção:

(para usuários hardcore)

Crie sua própria função:

Function myString(ParamArray Vals() As Variant)
    Separator1 = "{"
    Separator2 = "}"
    finalString = ""
    initialString = Vals(0)
    found = True
    firstpos = 1
    While found = True
        pos = InStr(firstpos, initialString, Separator1)
        If pos = 0 Then
            found = False
            endpartval = Mid(initialString, firstpos)
            finalString = finalString + endpartval
        Else
            stringParts = Mid(initialString, firstpos, pos - firstpos)
            pos1 = InStr(pos, initialString, Separator2)
            firstpos = pos1 + 1
            varNumber = Mid(initialString, pos + 1, pos1 - pos - 1)
            finalString = finalString + stringParts + Vals(varNumber + 1)
        End If
    Wend
    myString = finalString
End Function

Para fazer isso funcionar, você tem que abrir o VBA / Macros com ALT + F11 , então em ThisWorkbook insira um novo módulo e cole o código.

Agora, em qualquer célula, você pode colocar

=mystring("The next to die will be {0} {1}. Cheers!",A2,B2)

ou qualquer outra coisa. Lembre-se de que a string deve ir primeiro e, em seguida, as referências da célula.

Isso é válido:

=mystring("The next to die will be {0}, {3} and {2}. Cheers!",A2,B2,B3)

Isso não é:

=mystring(A2,"The next to die will be {0}, {3} and {2}. Cheers!",B2,B3)
    
por 07.09.2016 / 11:27
0

Não existe essa função no Excel, você pode usar SUBSTITUTE , mas ainda será longo:

=SUBSTITUTE(SUBSTITUTE("The next to die will be {1} {2}","{1}",A2),"{2}",B2)

    
por 07.09.2016 / 10:06
0

Para mim, parece que você está tentando concatenar um número variável de colunas na string. Verifique para ver se ajuda: link

    
por 11.09.2016 / 05:16