Localizar texto parcial no Excel 2013

0

No Excel 2013, gostaria de encontrar o valor na coluna B na linha em que uma string corresponde a uma string na coluna A. O que complica é que as strings da coluna A podem ser menores do que a string de valor desejada. Exemplo:

Column A    Column B
ABCD-       Result1
EF          Result2
BCD         Result3

Agora, exemplos de strings que devem retornar ...

"Result1": "ABCD-", "ABCD-EFG", "ABCD-H"
"Result2": "EF", "EFG", "EFGHIIJKL"
"Result3": "BCD", "BCDXY"

"ABCD" não deve retornar nenhum resultado.

Suponha que a string procurada esteja na célula C1.

Eu tenho que recorrer a uma macro ou existe uma fórmula para isso?

UPD : Haverá várias strings procuradas que serão localizadas em uma coluna em outra planilha e não haverá curingas no início. O valor que estou procurando pode ser colocado na coluna ao lado da coluna com strings solicitadas.

UPD2 : Suponha que o conteúdo da coluna A e da coluna B na Planilha1 e o conteúdo na Planilha2 abaixo:

SoughtString    ResultFound
ABCD-           Result1
EF              Result2
BCD             Result3
BCDXY           Result3
EFG             Result2
ABCD-EFG        Result1
EFGHIIJKL       Result2
ABCD-H          Result1
ABCD            No match

Tendo a fórmula de matriz ligeiramente modificada da resposta aceita na célula B2 copiada:

=IFERROR(INDEX(Sheet1!B$2:B$4;MATCH(1;COUNTIF(A2;Sheet1!A$2:A$4&"*")*(Sheet1!A$2:A$4<>"");0));"No match")
    
por MBWise 28.10.2014 / 11:15

2 respostas

0

Supondo que você tenha dados nas linhas 2 a 10, você pode usar essa "fórmula de matriz"

=IFERROR(INDEX(B$2:B$10,MATCH(1,COUNTIF(C1,A$2:A$10&"*")*(A$2:A$10<>""),0)),"No match")

confirmado com CTRL + SHIFT + ENTER

    
por 28.10.2014 / 19:34
0

Não está claro qual papel o C1 desempenha. Se as cadeias solicitadas já existirem em uma coluna, você poderá usá-las como o que você mostra como Coluna A da Planilha2. Se eles estiverem em algum outro lugar, você pode construir a Col A apenas referenciando a célula associada na outra lista. Por exemplo, se a lista estiver em Col Z, começando na linha 2, A2 será =Z2 e você poderá copiar a fórmula Col A para pré-preencher mais células do que precisa (elas permanecerão em branco até serem necessárias).

Se a lista de cadeias procuradas está sendo criada uma nova entrada de cada vez, você poderia simplesmente colocar as novas entradas na próxima posição em qualquer das listas (Col Z ou Col A). Se as novas entradas tiverem que entrar em C1 e cada nova entrada substituir a anterior, você precisará de uma macro ou um programa VBA para construir a lista a partir das entradas C1.

A partir do ponto em que as strings procuradas estarão em uma lista na Col A através de qualquer um desses métodos, isso é o que ocorreria no Col B. Suponha que o Result1 está em B2. A fórmula em B2 seria:

    =IF(ISERROR(FIND(Sheet1!A2,A2)),"NO MATCH",IF(FIND(Sheet1!A2,A2)=1,A2,"NO MATCH"))

Copie a fórmula abaixo da coluna B para quantos você precisar. Você pode preencher previamente o Col B com um grande número arbitrário de entradas e elas permanecerão em branco até que haja um valor na célula associada na Col A que produza um resultado.

    
por 28.10.2014 / 16:13