Como retornar valores de uma célula para várias células, cada uma com comprimento diferente

1

Eu não sei por onde começar, então ...

ex.

<*cell* M8> 2x^2-10x+8=0 

O que eu fiz até agora nas células: I4,J4,K4 ;

<*cell* I4>=LEFT(M8;1) returns the value 2

<*cell* J4>=MID(M8;5;3) returns the value -10

<*cell* K4>=MID(M8;10;1) returns the value 8

e até agora está correto! (essas são as respostas que eu procuro)

Mas eu quero uma função mais dinâmica:

ex.2

"Mas! se as células M8 text, value, seria" -15x ^ 2 + 101x-18 = 0 as funções esquerda , mid não forneceriam as respostas que eu procuraria.

Estou procurando uma função que possa tornar tudo isso verdade (piada de mau gosto)

  • pesquise "da esquerda" pare antes de x ^ n retorne o valor (-s) para a célula designada (ex. I4)
  • pesquise após x ^ n tome todos os valores antes de x retornar o valor (-s) à célula designada (ex. J4)
  • pesquise após x tome todos os valores antes de = retornar o valor (-s) à célula designada (ex. K4)

(Desculpe pessoal, mas eu sou um noob, então é o melhor que eu consegui fazer!) Claro ... Eu sei que provavelmente há uma tonelada de soluções melhores. Sinta-se à vontade para dar a eles! Eu só não sei como começar ou com função para começar ...

    
por The rabbit hole 20.09.2013 / 23:31

2 respostas

0

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.

    
por 20.09.2013 / 23:54
0

Este é um desenvolvimento da resposta anterior, para equações de grau n . Mas para que isso seja uma solução simple , algumas regras estritas devem ser feitas na formulação do problema:

  • A função precisa de para ter todas variáveis claramente e exclusivamente definidas.

    • x^1 , x^2 , ..., x^9 são todos válidos e todos os termos antes de x^9 precisarem existir (mesmo que não existam, apenas diga 0 x^8 , por exemplo).
    • x^1 e x^10 não são válidos. Porque o segundo contém o primeiro, a função FIND será confusa. O uso correto seria x^01 e x^10 .
    • x^0 não precisa existir (e, no último caso apresentado, não existe ).
  • Reciprocamente, você precisa ter todas as variáveis na tabela de consulta. As mesmas regras se aplicam.

Dito isto, apresento agora a minha configuração de dados:

Elemostraalgumascoisassobreoqueéesperadodafunção.Alémdasregrasdeusoapresentadasacima,oscoeficientespodemserescritoslivremente.Devidoaessaliberdade,noentanto,ascoisaspodemparecerbastanteconfusas.Minhasugestãoémanteraconsistência(ouseja,+105.25x^15ou-205.987x^05,emtodososcoeficientes).

Agora,asfunçõesdepesquisareais:

  1. Parax^8:afunçãoéessencialmenteigualàqueeuapresenteiantes,entãoeuadapteiissoparaomeuexemplo:

    =LEFT($C$2;FIND(B4;$C$2)-1)

    Observeossinaisdedólarnafunçãoquecontémacélula.Emboraestasejaumafunçãosingular,issoserádeajudamaistarde.

  2. Parax^7ax^1:

    Afunçãoaquiseriamuitomaiscomplicada(quaseimpossível)semasconsideraçõesiniciais.

    =MED($C$2;FIND(B4;$C$2)+LEN(B4);FIND(B5;$C$2)-(FIND(B4;$C$2)+LEN(B4)))

    Alógicaportrásdissoépegarotextoqueestáentreostermosemseqüência.Osegundoargumentocolocaoprimeirocaractereapósoprimeirotermo(x^8)eoterceiroargumentocalcula,atravésdadiferença,ocomprimentodocoeficiente.

    Vocêpodearrastaressafunçãoatéx^1.Éaquiqueossinaisdedólar(tambémconhecidoscomo"bloquear o celular") são úteis.

    Se você não escrever os termos nulos, esta função dará erros mesmo em termos que existam.

  3. Para x^0 :

    =MED($C$2;FIND(B11;$C$2) + LEN(B11);LEN($C$2) - (FIND(B11;$C$2) + LEN(B11)) - 2)
    

    O raciocínio é semelhante ao que usei na resposta anterior.

Eu tenho usado com bastante frequência a função LEN para calcular o tamanho (em caracteres) dos fatores. Embora no meu exemplo, eles sejam todos compostos de 3 caracteres, desta forma eu evito escrever números mágicos em todas as funções e isso permite expansibilidade (que é necessária para as equações de grau n ).

    
por 21.09.2013 / 01:26