Supondo que você tenha uma string semelhante à seguinte:
a x^2 + b x + c = 0
Onde a , b e c pode ser qualquer número real (no sentido matemático) (por exemplo uma função quadrática), então você pode usar, juntamente com o seu raciocínio, funções FIND.
Para o primeiro coeficiente ( a ), já que é o primeiro, você pode usar o seguinte:
=LEFT(M8;FIND("x^2";M8)-1)
Assumindo que x ^ 2 é único, então esta função irá obter todos os caracteres restantes do termo x ^ 2.
Os demais termos seguem um raciocínio similar. Estou postando isso agora para te esclarecer, vou escrever as soluções restantes logo em seguida.
Para o segundo coeficiente ( b ) você atinge uma parede, porque você precisa encontrar "x" duas vezes, já que em "x ^ 2" é um "x". Pode haver maneiras melhores de fazer isso, mas é razoavelmente claro escrever FINDs aninhados.
=MID(M8;FIND("x^2";M8)+3;FIND("x";B2; FIND("x";B2) + 1) - (FIND("x^2";B2) + 3) )
Explicando o raciocínio. O coeficiente começa logo após "x ^ 2" ser escrito. Então, primeiro encontre o primeiro caractere correspondente a "x ^ 2" e depois aumente o número de caracteres que a string é (3). Depois, você precisa saber quanto chars para tirar, e essa é a diferença entre o segundo "x" e o final do "x ^ 2". O +1
é necessário no terceiro FIND
para informar ao Excel para não procurar o primeiro.
O terceiro coeficiente ( c ) baseia-se no duplo FIND
que usei anteriormente.
=MID(M8;FIND("x";B2; FIND("x";B2) + 1) + 1; LEN(M8) - FIND("x";B2; FIND("x";B2) + 1) - 2)
LEN
calcula a quantidade total de caracteres na string. A diferença é o número de caracteres no último coeficiente. O -2
existe para excluir o =0
O único problema com essa abordagem é que números positivos teriam a marca +. Você pode pegá-los usando IFs, mas é mais trabalhoso e, para fins de matemática, é uma representação precisa.