Excel - repita partes da fórmula x-times

0

Gostaria de repetir uma fórmula para x vezes, dependendo de um número mostrado em uma célula diferente. Para mim, esse número é a duração de um determinado texto.

O que estou tentando fazer é adicionar caractere (s) antes e depois de cada caractere, para ter um novo texto em uma nova célula.

A parte básica da fórmula original - que eu quero encurtar porque o texto original tem agora um comprimento de ~ 100 caracteres; então eu teria que repetir essa parte básica da fórmula 100 vezes - é assim:

=$T$10&MID(K21;1;1)&$T$11&MID(K21;2;1)&$T$12

Agora, em uma célula diferente, eu tenho o número 33 (o comprimento do texto original). Agora a parte

$T$11&MID(K21;2;1)

deve ser repetido 32 vezes, mas o número no meio (dando a posição) deve iterar de acordo. Se você digitar a fórmula manualmente para este exemplo, ficaria assim:

=$T$10&MID(K21;1;1)&$T$11&MID(K21;2;1)&$T$11&MID(K21;3;1)&$T$11&MID(K21;4;1)&$T$11&MID(K21;5;1)&$T$11&MID(K21;6;1)&$T$11&MID(K21;7;1)&$T$11&MID(K21;8;1)&$T$11&MID(K21;9;1)&$T$11&MID(K21;10;1)&$T$11&MID(K21;11;1)&$T$11&MID(K21;12;1)&$T$11&MID(K21;13;1)&$T$11&MID(K21;14;1)&$T$11&MID(K21;15;1)&$T$11&MID(K21;16;1)&$T$11&MID(K21;17;1)&$T$11&MID(K21;18;1)&$T$11&MID(K21;19;1)&$T$11&MID(K21;20;1)&$T$11&MID(K21;21;1)&$T$11&MID(K21;22;1)&$T$11&MID(K21;23;1)&$T$11&MID(K21;24;1)&$T$11&MID(K21;25;1)&$T$11&MID(K21;26;1)&$T$11&MID(K21;27;1)&$T$11&MID(K21;28;1)&$T$11&MID(K21;29;1)&$T$11&MID(K21;30;1)&$T$11&MID(K21;31;1)&$T$11&MID(K21;32;1)&$T$11&MID(K21;33;1)&$T$12

Existe alguma possibilidade de gerar dinamicamente esta fórmula de acordo com o número dado em uma célula diferente?

Por vários motivos no fluxo de trabalho, não desejo usar uma macro do VBA aqui.

    
por Jens 27.04.2017 / 14:49

1 resposta

1

Eu diria que encontrei uma solução para o meu desafio. Estou usando o Excel 2013 e esta é a minha solução:

  1. Ativar iterações no Excel com X (por exemplo, 150) iterações: vá para "Arquivo" - > "Opções" - > 'Fórmula' e ativar iterações
  2. Este é o texto indicado:

    B2=P50,R50,P1,R1,P27,R27,

  3. Esta é a fórmula de iteração:

Alemão B3=WENN(B3<150;B3+1;1)

Inglês B3=IF(B3<150,B3+1,1)

Ative esta célula e pressione enter para assegurar que o resultado da iteração seja X = 150 ou 1. Outros resultados podem ocorrer se vários recálculos tiverem ocorrido um após o outro. Então, um processo de iteração foi interrompido com o próximo.

  1. Esta é a fórmula de iteração menos 3:

    B4=B3-3

  2. Estes são os caracteres inseridos antes de cada caractere do texto:

    B5=C

  3. Estes são os caracteres que são inseridos após cada caractere do texto:

    B6=,

  4. Esta é a fórmula para ter os caracteres antes e depois de cada um dos caracteres originais:

Alemão B7==WENN($B$4<0;B7;WENN($B$4=0;"";WENN(LÄNGE(B7)<(LÄNGE(B2))*(LÄNGE(B5)+LÄNGE(B6)+1);VERKETTEN(B7;$B$5;TEIL(B2;$B$4;1);$B$6);B7)))

Inglês B7==IF($B$4<0,B7,IF($B$4=0,"",IF(LEN(B7)<(LEN(B2))*(LEN(B5)+LEN(B6)+1),CONCATENATE(B7,$B$5,MID(B2,$B$4,1),$B$6),B7)))

  1. Apenas certifique-se de que a fórmula de iteração resultante permaneça em X = 150 ou 1 após o processo de iteração. Você pode conseguir isso clicando na célula da fórmula de iteração, com o cursor visível atrás da fórmula e, em seguida, pressionando Enter

  2. Este é o original e o texto resultante:

    P50,R50,P1,R1,P27,R27,

    CP,C5,C0,C,,CR,C5,C0,C,,CP,C1,C,,CR,C1,C,,CP,C2,C7,C,,CR,C2,C7,C,,

Se você gosta disso ou de algo novo para você, vote na resposta. Obrigado.

    
por 28.04.2017 / 11:09