Saltar al contenido

Ayuda con Formula Avanzada para encontrar/coincidir palabra en frase de texto


diegodd

Recommended Posts

publicado

Hola

Voy a tratar de explicar lo mejor posible lo que necesito que haga la funcion:

"Que busque la coincidencia de una lista de palabras en una frase, y me devuelva esa/s palabra/s, sino encuentra ponga Universal"

Ejemplo:

Tengo en columna A categorias (palabras) por ejemplo

A1:Manzana

A2: Banana

A3: Frutilla

A4:Sandia

Tengo en columna B frases (productos) por ejemplo

B1: Deliciosas manzana verdes 3kg

B2: manzana rojas 1kg

B3: Saludable frutilla dulce

B4: Riquisima manzana verde

B5: Frutilla Roja 1kg

B6: Banana ecuador 1kg

B7: Combo de Manzana y Frutilla 1kg

B8: Lechuga 1kg

B9: Rabanitos Frescos 1kg

Necesito: columna C con formula que busque en la frase de B, la coincidencia de alguna/s palabra de A y escriba en C esa palabra/s o sino la encuentra escriba Universal

El resultado deberia quedar:

C1: Manzana

C2: Manzana

C3: Frutilla

C4: Manzana

C5: Frutilla

C6: Banana

C7: Manzana, Frutilla

C8: Universal

C9: Universal

ACLARACION:

Que no diferencie entre mayusculas y minusculas

Si en la frase encuentra 2 palabras coincidentes, escriba en C las 2 palabras separadas por coma

Si en la frase no encuentra ninguna palabra coincidente, escriba en C la palabra "Universal".

Adjunto archivo con el ejemplo para hacer pruebas (eliminar plural de manzana en B1 y B2)

MUCHAS GRACIAS

Encontrar_Coincidir.xls

publicado

Buen dia ioyama

probe la ultima que me enviaste y tiene algunas fallas.

Te paso el nuevo archivo para testear.

Igualmente otro compañero me envio esta UDF que funciona muy bien para lo que necesito.

=GetWords($A$1:$A$30,B1)

[COLOR=#2E8B57][FONT=Monaco]Function GetWords(rRng As Range, sTxt As String)[/FONT][/COLOR]
[COLOR=#2E8B57][FONT=Monaco] Dim rCell As Range[/FONT][/COLOR]
[COLOR=#2E8B57][FONT=Monaco] For Each rCell In rRng[/FONT][/COLOR]
[COLOR=#2E8B57][FONT=Monaco] If InStr(UCase(sTxt), UCase(rCell)) > 0 And InStr(GetWords, rCell) = 0 Then[/FONT][/COLOR]
[COLOR=#2E8B57][FONT=Monaco] GetWords = GetWords & IIf(Len(GetWords) > 0, ", ", "") & rCell[/FONT][/COLOR]
[COLOR=#2E8B57][FONT=Monaco] End If[/FONT][/COLOR]
[COLOR=#2E8B57][FONT=Monaco] Next rCell[/FONT][/COLOR]
[COLOR=#2E8B57][FONT=Monaco] If Len(GetWords) = 0 Then GetWords = "Universal"[/FONT][/COLOR]
[COLOR=#2E8B57][FONT=Monaco]End Function[/FONT][/COLOR][/CODE]

MUCHISIMAS GRACIAS

Coincidir VBA.zip

publicado

Hola Diego

Tan sólo a título ilustrativo, ya que veo que el tema lo tienes resuelto.

Public Function Coincidencias(rango As Range, celda2 As Range) As String
For Each celda In rango
[COLOR="#FF0000"] If celda = "" Then GoTo Salto[/COLOR]
a = LCase(celda2)
b = "*" & LCase(celda) & "*"
i = a Like b
If i = True Then c = c & ", " & LCase(celda)
[COLOR="#FF0000"]Salto:[/COLOR]
Next
If c = "" Then
Coincidencias = "universal"
Else
Coincidencias = Right(c, Len(c) - 2)
End If
End Function[/CODE]

Con lo adicionado evitarás las comas que se producen cuando hay celdas en blanco en el listado de palabras a comparar con las frases.

Un saludo desde Vitoria

Archivado

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

×
×
  • 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.