EXCEL, Reemplazar "PRO": Borrar condicionalmente, cortar y pegar carácteres en una sola función

Haceis una labor altruista y excepcional!

Expongo aquí en mi primer post una necesidad que me surge y no se como resolver:

Necesito una Función en la que; si el penúltimo carácter es un signo "/"; lo borra. Y en caso de que haya hecho esto, corta el último carácter (una letra) y lo pega al primer lugar.

Ejemplos:

12345678Y/X --> X12345678Y

12345678V/X --> X12345678V

34598456L/M -->M34598456L

78945612Y --> 78945612Y  "Lo deja igual"

78324569T/Z --> Z78324569T

14725836Q --> 14725836Q "Lo deja igual"

Es decir, sólamente opera si encuentra una barra, y cuando encuentra la barra; la borra y pasa la letra última al primer lugar.

Espero que alguien me diga cómo podría hacerlo porque son miles de registros y hacerlo a mano sería una paliza interminable...

Respuesta
1

.09.02.17

Buenas tardes, Omar

Asumiendo que el texto a modificar estuviere en la celda B4 y que, cuando haya una barra, siempre tienes un único caracter luego de ella, esta fórmula hace lo que solicitas:

=SI(ESERROR(ENCONTRAR("/";B4));B4;DERECHA(ESPACIOS(B4);1)&IZQUIERDA(ESPACIOS(B4);LARGO(ESPACIOS(B4))-2))

[Considera si usas comas o punto y coma para separar argumentos de las funciones. Yo usé ";"]
Asígnale el formato deseado y, luego, copia esta celda y pégala en las restantes de esta misma columna, hasta cubrir todos los registros.

La fórmula se encarga de encontrar la barra en cuyo caso junta el ultimo caracter con todos aquellos anteriores a la barra. Si no repite lo que hubiese en B4.

Por las dudas le agregué una protección para el caso de que esos textos tuvieran espacios "invisibles" que distorsionarían el resultado de la fórmula.

Verificados los resultados, podrás convertir todas estas fórmulas copiando las celdas y pegándolas como Valores.

.

¡Muchísimas Gracias!!

Muy agradecido con la respuesta!!

Lo de la protección por si hay espacios invisible o se han introducido por error es también muy buena idea.. 

Lo dicho; Reitero las gracias!!

.

Me alegro de que te haya servido, Omar

Un placer ayudar!

Abrazo
Fer

.

Hola de nuevo Fer! 

En el primer registro sí  me funciona bien, pero en el resto no me acaba de funcionar la fórmula....  Adjunto tabla de ejemplo

             ORIGINAL          MODIFICADA      RESULTADO DESEADO

  • 6441094J/X        X6441094J            X6441094J   (BIEN)
  • 6938192N/X       6938192N/             X6938192N  (MAL)
  • 6441089P/X       6441089P/              X6441089P  (MAL)
  • 262821Z/Y          262821Z/                Y262821Z    (MAL)
  • 17665115B         17665115B              17665115B   (BIEN)
  • 17130412N         17130412N             17130412N   (BIEN)
  • 17154323A         17154323A              17154323A   (BIEN)

Intento modificar la fórmula pero dado mi desconocimiento de la materia (y mi torpeza con las matemáticas) no acabo de pillar el funcionamiento...

Muchísimas gracias de todo corazón!!

.

Hola, Omar

Imagino -por la calificación- que la respuesta del otro experto habrá resuelto tu problema.

De todos modos, si así no fuera, me parece que el tema pasa porque no tienes espacios normales en esos textos -sino otro caracter similar- por ello la función ESPACIOS no los desestima.

Para eludir ese problema, te modifiqué la fórmula de la siguiente manera:

=SI(ESERROR(ENCONTRAR("/";B4));B4;EXTRAE(ESPACIOS(B4);ENCONTRAR("/";B4)+1;1)&IZQUIERDA(ESPACIOS(B4);ENCONTRAR("/";B4)-1))

De esta manera nos aseguramos que tome caracteres reales, tengan o no esos blancos.

Aplicada a tus ejemplos erroneos, estos son los resultados con la nueva fórmula:

6938192N/X -> X6938192N
6441089P/X  -> X6441089P
262821Z/Y -> Y262821Z

Espero que ahora sí esté funcionando OK para ti.

Un abrazo

Fer

.

¡Muchísimas Gracias Fer!! 

Menuda fórmula profesional has resuelto!! Me quito el sombrero!!! Yo solo en meses no hubiese sido capaz de sacarla... La verdad es que el post de Macrodos me resulta interesante pero hoy por hoy, dado mi nivel, no me resuelve un problema tan complejo como me resultaba este... aunque iré documentándome puesto que es un campo de conocimientos realmente útil.

Ahora funciona perfectamente tal y como dices!! Sólamente encuentro un problemita que no percibía antes. Y es que no se como incorporar a la fórmula una función que añada un "0" o varios, delante de los registros que tengan menos carácteres de lo normal (total de 9 contando letras).

Por el motivo que sea, quien en su día registraba los datos, obvió los números "0" iniciales de muchos registros, pero resulta necesario incorporarlo.

Es decir; los registros a modificar, deben tener una letra de prefijo + siete números + una letra sufijo. Y en el caso de los que sólamente tienen 6 números o incluso 5; deberían ir precedidos de un cero o dos ceros, respectivamente... Es decir, las cadenas corregidas siempre deben tener una letra delante, seguida de siete números, y seguida de otra letra.

Me explico:

1234567R/X --> X1234567R

123456V/Y  ---> Y0123456V

12345N/Z -----> Z0012345N

¿Sería esto posible?

Lamento darte tanto trabajo y la verdad es que no se como agradecer esta encomiable y abnegada tarea.

Saludos y reitero los agradecimientos. Buen fin de semana!!

.

Buenos días, Omar

Sí, es posible.

Aunque no mencionaste el formato que deberían tener aquellos registros que no contienen la barra y, por tanto, tampoco tiene una letra inicial.

En esta adaptación de aquella fórmula agrega los ceros que falten a la derecha hasta completar las nueve posiciones.

Prueba con esta fórmula:

=SI(ESERROR(ENCONTRAR("/";B4));REPETIR("0";MAX(9-LARGO(B4);0))&B4;EXTRAE(ESPACIOS(B4);ENCONTRAR("/";B4)+1;1)&REPETIR("0";MAX(8-LARGO(IZQUIERDA(ESPACIOS(B4);ENCONTRAR("/";B4)-1));0))&IZQUIERDA(ESPACIOS(B4);ENCONTRAR("/";B4)-1))

En negritas lo que le agregué a la anterior.

¿Notas la diferencia entre ambas respuestas?

Aquí van unos ejemplos de los resultados:

Los tres últimos son los que habías mencionado en tu última consulta

Un abrazo

Fer

.

¡Millones de Gracias! ... (No se cómo escribir una ovación pero está claro que la mereces!!) 

Aprecio la diferencia entre ambas e intentaré empaparmelas para posteriores ocasiones. Pero la verdad es que me has resuelto una papeleta enorme, Maestro!!

Donde quiera que estés tienes unas cervezas pagadas!!!

.

Me alegro de haberte ayudado.

Un abrazo

Fer

@ Buenos Aires, Argentina

.

1 respuesta más de otro experto

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas