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
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")
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.