Saltar al contenido

Sustituir texto completo desde búsqueda parcial


Sergio

Recommended Posts

Hola hola!

Llevo varios días dándole vueltas a la cabeza a cómo podría hacer lo siguiente. Esta es la imagen:

image.png

Dada una tabla de búsqueda, me gustaría buscar en la columna A los valores de la columna E. En caso de que se encuentren, sustituir toda la palabra entre los punto y coma con el valor nuevo de la columna F, tal como se muestra en la columna B (es el resultado esperado).

La columna A tiene cientos de registros.

Adjunto archivo para facilitar la ayuda.

Mil gracias.

 

sustituciones.xlsx

Enlace a comentario
Compartir con otras webs

Creo que seria, clicamos el columna A, buscamos y seleccionamos (Ctrl+B) damos a reemplazar.

Una vez estemos en la ventana emergente, rellenamos:

Buscar: Añadimos la/s palabra/s a buscar o reemplazar.

Reemplazar: ponemos lo que que deseamos reemplazar.

Luego nos da la opciones:Reemplazar todos-Reemplazar-Buscar todos-Buscar siguiente.
 

Enlace a comentario
Compartir con otras webs

Gracias David, es más complicado que eso:

  • Necesito hacerlo con una fórmula. Tengo unos 50.000 registros.
  • La búsqueda debe ser parcial
  • Pero la sustitución debe ser por la palabra completa.
  • Si aparecen dos búsquedas parciales en una misma celda, debe sustituir las dos palabras

 

Enlace a comentario
Compartir con otras webs

Estimado Sergio,

Creo haber encontrado una solución, como no puedo compartir mi archivo, detallo en pasos mi propuesta:

1. Convertir a Tabla el rango E1:F4 donde se encuentran los parámetros de búsqueda parcial  (Tabla1)

2. Definir en un rango nombrado el número de palabras de cada celda en la columna A:

Nro_Pal: =COLUMNA(Hoja1!$A$1:INDICE(Hoja1!$100:$100;1+LARGO(Hoja1!$A2)-LARGO(SUSTITUIR(Hoja1!$A2;";";""))))

3. Definir en un rango nombrado las palabras extraídas en un rango horizontal (columna) de cada celda en la columna A:

Palabras: =ESPACIOS(EXTRAE(SUSTITUIR(Hoja1!$A2;";";REPETIR(" ";50));1+50*(Nro_Pal-1);50))

4. La fórmula final de reemplazo de palabras a partir de la celda B2 (Matricial) :

=SI.ERROR(INDICE(Tabla1[Valor Nuevo];N(SI(1;(1/TRANSPONER(MMULT(TRANSPONER(COINCIDIR(FILA(Tabla1);FILA(Tabla1)));--ESNUMERO(HALLAR(Tabla1[Valor antiguo];Palabras)))))^-1)));TRANSPONER(Palabras))

Esta solución reemplazará todas las coincidencias parciales, incluyendo repeticiones.

Espero te sea útil.

Enlace a comentario
Compartir con otras webs

Hola @John Jairo V, funciona correctamente! Muchas gracias. XMLFILTRO está infrautilizada pero es una función muy útil.

Como no encontraba la forma adecuada de hacerlo, probé con Power Query. Creé una primera consulta con List.Accumulate, pero entre los 76 000 registros que tiene en tabla y los 380 registros que tiene la tabla de comparación, son casi 29 millones de búsquedas y el equipo se bloqueaba. Al final lo he solucionado también con PQ pero con una función personalizada. El proceso tarda casi 10 minutos, pero no he encontrado una forma mejor de hacerlo.

Por cierto, tu fórmula me servirá para proyectos más pequeños. Gracias de nuevo.

Enlace a comentario
Compartir con otras webs

aprovechando este comentario:

En 14/7/2022 at 1:03 , Sergio dijo:

XMLFILTRO está infrautilizada pero es una función muy útil

adjunto una muestra (de una corta parte) de las posibilidades de xPath 1.0 que usa XMLFILTRO

filterXml xPath 1.0.xlsx

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 93 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • No va a ser necesario distinguir el tipo de proceso entre 1 y 2. Revisa el adjunto a ver si es eso lo que quieres. Function MediaAttention(mImp As Range, _ q25 As Range, q50 As Range, _ Optional q75 As Range, _ Optional q100 As Range) As Double '-- Opción 1 If q75 Is Nothing And q100 Is Nothing Then MediaAttention = q25 / q50 Exit Function End If '-- Opción 2 MediaAttention = ((0.25 * (q25 - q50)) / mImp) + _ ((0.5 * (q50 - q75)) / mImp) + _ ((0.75 * (q75 - q100)) / mImp) + _ (q100 / mImp) End Function   Media Attention Formula 1.2.xlsb
    • Gracias tomarse el tiempo de leer por responder Maestro @Antoni Adjunto el archivo con la idea a la que deseo llegar, sigo atento. Mil gracias por el tiempo y la ayuda brindada   Media Attention Formula 1.2.xlsb
    • He analizado la UDF y entiendo perfectamente lo que hace, lo que no entiendo es lo que pretendes hacer. Mejor sube un ejemplo resuelto de  como debería funcionar la UDF con los nuevos parámetros solicitados. 
    • Gracias, ya lo conseguí solucionar
    • Hola a todos Primero que nada deseo agradecer el tiempo en leer este post, Muchas Gracias. Me acerco a ustedes para pedir su ayuda para lo siguiente: Tengo una UDF, la cual tiene dos escenarios: 1.- Si Tiempo Promedio y Duración del Video son diferentes de 0, hacer el calculo 2.- Si lo anterior es igual a 0, se realiza el otro calculo por cuartiles. El detalle es que son muchas celdas a seleccionar, lo cual creo puede ser engorroso, entonces, pensando en simplificar la función, me pregunte si fuera posible: a.- Colocar 1 al principio de la función y después solo seleccionar 2 celdas correspondientes (Rango continuo o discontinuo) b.- Colocar 2 al principio de la función y después seleccionar las 5 celdas correspondientes (Rango continuo o discontinuo) Espero me puedan ayudar y/o orientar al respecto, quedo atento para cualquier duda, de antemano les agradezco cualquier ayuda brindada. Mil Gracias!! Media Attention Formula 1.1.xlsb  
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.