Se a célula contiver “Texto específico”, retorne o valor da célula ao lado. Semelhante ao VLOOKUP

0

Eu tenho 2 folhas, uma com uma lista de partes (sku) e todos os veículos em que a peça vai se encaixar (montagem) separados por "^^" se parece com isso:

sku | fitment


 1 |car1 ^^ car2 ^^ car3
 2 |car2 ^^ car3
 3 |car1
 4 |car1 ^^ car 2
 5 |car3

Na minha segunda folha eu tenho uma lista de carros que se parece com isso:

fitment

car1
car2
car3

Para cada carro na segunda folha, eu gostaria de pesquisar o ajuste na folha um para esse texto específico e retornar o sku se ele for encontrado (separado por um delimitador). Então ficaria assim:

fitment |skus
-------------
car1|1,3,4
car2|1,2,4
car3|1,2,5
    
por Leathel 04.02.2016 / 17:40

2 respostas

1

Experimente esta pequena função definida pelo usuário :

Public Function CarFinder(clist As Range, carID As String)
   Dim cell As Range
   CarFinder = ""

   For Each cell In clist
      If InStr(1, cell, carID) > 0 Then
         If CarFinder = "" Then
            CarFinder = cell.Offset(0, -1).Value
         Else
            CarFinder = CarFinder & "," & cell.Offset(0, -1).Value
         End If
      End If
   Next cell
End Function

Um exemplo de seu uso:

FunçõesDefinidaspeloUsuário(UDFs)sãomuitofáceisdeinstalareusar:

  1. ALT-F11exibeajaneladoVBE
  2. ALT-IALT-Mabreumnovomódulo
  3. coleomaterialefecheajaneladoVBE

Sevocêsalvarapastadetrabalho,aUDFserásalvacomela.SevocêestiverusandoumaversãodoExcelposteriora2003,deverásalvaroarquivocomo.xlsmemvezde.xlsx

PararemoveroUDF:

  1. abrirajaneladoVBEcomoacima
  2. limpeocódigo
  3. fecheajaneladoVBE

ParausaroUDFdoExcel:

=CarFinder($B$1:$B$100,Z9)

Parasabermaissobremacrosemgeral,consulte:

link

e

link

e para detalhes sobre UDFs, consulte:

link

As macros devem estar ativadas para que isso funcione!

    
por 04.02.2016 / 18:45
0

O UDF do Gary's Student é mais parecido com o que você está tentando fazer, mas aqui está uma versão que funciona sem o VBA. O problema é que você precisa de colunas separadas para cada SKU. Organize sua saída assim, com carros à esquerda e SKUs na parte superior:

        1    2    3    4    5
car1
car2
car3

Em seguida, assumindo que car1 esteja na célula D2 e 1 esteja, portanto, na célula E1, use essa fórmula na célula E2:

=NOT(ISERROR(SEARCH($D2,INDEX([Fitments],MATCH(E$1,[SKUs],0)))))

Você pode preencher automaticamente a fórmula para preencher os demais dados. Retorna TRUE ou FALSE .

    
por 04.02.2016 / 20:15