Excel - repetir partes de fórmula x veces

0

Me gustaría repetir una fórmula para x veces dependiendo de un número que se muestra en una celda diferente. Para mí, este número es la longitud de un texto dado.

Lo que estoy tratando de hacer es agregar caracteres antes y después de cada carácter dado, para tener un nuevo texto en una nueva celda.

La parte básica de la fórmula original, que quiero acortar porque el texto original tiene ahora una longitud de ~ 100 caracteres; así que tendría que repetir esta parte básica de la fórmula 100 veces, se ve así:

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

Ahora, en una celda diferente, tengo el número 33 (la longitud del texto original). Ahora la parte

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

debe repetirse 32 veces, pero el número en el medio (dando la posición) debe iterar en consecuencia. Si escribe la fórmula manualmente para este ejemplo, se vería así:

=$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 alguna posibilidad de generar dinámicamente esta fórmula de acuerdo con el número dado en una celda diferente?

Por varias razones en el flujo de trabajo, no quiero usar una macro VBA aquí.

Jens
fuente
Estoy casi seguro de que no hay manera de hacerlo. Puede encontrar una solución al usar la última versión de Excel (vea la nueva función CONCAT allí) y dividir el contenido de su K21 actual en un carácter por celda.
Máté Juhász
¿Podría describir qué se supone que debe hacer esa función y quizás dar un ejemplo de cómo se vería con dos o tres repeticiones en lugar de 33? De esa manera, sería más claro lo que estás tratando de hacer.
Seth
Solo se puede hacer si tiene la última versión de Excel que tiene TEXTJOIN. Si no tiene acceso a eso, entonces vba es la única manera.
Scott Craner
Aunque se puede hacer en Hojas de Google : =$T$10 & ArrayFormula(JOIN($T$11,MID(K21,ROW(INDIRECT("1:" & A2)),1))) donde A2 es el número de repeticiones.
Scott Craner
1
@Scott Crane: verificaré si tengo TEXTJOIN o si puedo usar las hojas de Google para este flujo de trabajo y le avisaré. Al menos es un buen punto de partida, para echar un vistazo. ¡Gracias!
Jens

Respuestas:

1

Yo diría que he encontrado una solución a mi desafío. Estoy usando Excel 2013 y esta es mi solución:

  1. Active iteraciones en Excel con X (por ejemplo, 150) iteraciones: vaya a 'Archivo' - & gt; 'Opciones' - & gt; 'Formula' y activar iteraciones.
  2. Este es el texto dado:

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

  3. Esta es la fórmula de iteración:

alemán B3=WENN(B3<150;B3+1;1)

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

Active esta celda y presione Intro para asegurarse de que el resultado de la iteración sea X = 150 o 1. Otros resultados pueden ocurrir si se han realizado varios cálculos poco después uno del otro. Entonces, un proceso de iteración ha sido interrumpido con el siguiente.

  1. Esta es la fórmula de iteración menos 3:

    B4=B3-3

  2. Estos son los caracteres que se insertan antes de cada carácter del texto dado:

    B5=C

  3. Estos son los caracteres que se insertan después de cada carácter del texto dado:

    B6=,

  4. Esta es la fórmula para tener los caracteres antes y después de cada uno de los caracteres originales:

alemán 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. Solo asegúrese de que la fórmula de iteración resultante se encuentre en X = 150 o 1 después del proceso de iteración. Puede lograr esto haciendo clic en la celda de la fórmula de iteración, con el cursor visible detrás de la fórmula, y luego presione Intro

  2. Este es el original y el 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,,

Si le gusta esto o esto es nuevo para usted, vote por la respuesta. Gracias.

Jens
fuente