Excel - Encontrar dentro del contenido de una celda un valor de una lista

 
Vista:
sin imagen de perfil

Encontrar dentro del contenido de una celda un valor de una lista

Publicado por Jorge (2 intervenciones) el 05/07/2021 19:59:46
Hola a todos,

Buenas tardes. Estoy intentando dotar de estructura a un listado de productos y una de las tareas es asignarle la marca que le corresponda.
Afortunadamente en la lista en el campo Nombre (hoja Productlist -> Columna H) para la mayoría de los productos el nombre de la marca a la que pertenecen está incluido en el campo.
Por ejemplo en la celda H2 la marca Epson forma parte del contenido de la celda.
Lo que necesito es poder poner la marca del producto en la columna “I” (marca) para cada producto del listado. Para saber que marcas debo buscar tengo una lista de marcas en la hoja UpdateBrands.
El problema consiste en encontrar dentro del contenido de una celda un valor de una lista.
He estado dándole vueltas al problema, pero no encuentro la manera.
Por favor ¿Algún alma caritativa podría sacarme de esta tortura?
Eternamente agradecido
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Encontrar dentro del contenido de una celda un valor de una lista

Publicado por Antoni Masana (2485 intervenciones) el 06/07/2021 18:47:06
Lo veo muy complicado por no decir imposible hacerlo con una función de Excel.
He creado una macro y tarda un ratito largo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Option Explicit
 
Sub Poner_Marcas()
    Dim Fila As Long, Tabla() As String, Num As Integer, _
        Texto As String, a As Integer
 
    Sheets("UpdateBrands").Select
    Fila = 2
    While Cells(Fila, "B") <> ""
        ReDim Preserve Tabla(Fila - 2)
        Tabla(Fila - 2) = UCase(Cells(Fila, "B"))
        Fila = Fila + 1
    Wend
    Num = Fila - 3
 
    Sheets("Productlist").Select
    Application.DisplayStatusBar = True
    Fila = 2
    While Cells(Fila, "H") <> ""
        Texto = UCase(Cells(Fila, "H")): DoEvents
        If (Fila Mod 100) = 0 Then Application.StatusBar = "Procesando la fila: " & Fila
        For a = 0 To Num
            If InStr(Texto, Tabla(a)) > 0 Then
                Cells(Fila, "I") = Tabla(a)
                Exit For
            End If
        Next
        Fila = Fila + 1
    Wend
    Application.StatusBar = ""
    Application.DisplayStatusBar = True
    MsgBox "Fin de la Macro."
End Sub

Y esta macro para que ponga la marca cuando modifique la columna H

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Fila As Long, Texto As String
 
    If Target.Column = 8 Then
        Texto = UCase(Target.Text)
        Cells(Target.Row, "I") = ""
        Fila = 2
        With Sheets("UpdateBrands")
            While .Cells(Fila, "B") <> "" And Fila > 1
                If InStr(Texto, .Cells(Fila, "B")) > 0 Then
                    Cells(Target.Row, "I") = .Cells(Fila, "B")
                    Fila = 0
                End If
                Fila = Fila + 1
            Wend
        End With
    End If
End Sub

Adjunto libro.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Encontrar dentro del contenido de una celda un valor de una lista

Publicado por Jorge (2 intervenciones) el 14/07/2021 11:19:39
Hola Antoni,

Muchas gracias. Lo voy a probar, a ver que tal.
No estoy seguro de lo que saldrá en la valoración pero quería poner un 10 por lo menos.
Muchas gracias de nuevo.

J.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar