En Excel 2013, me gustaría encontrar el valor en la columna B en la fila donde una cadena coincide con una cadena en la columna A. Lo que complica esto es que las cadenas en la columna A pueden ser más cortas que la cadena de valor buscada. Ejemplo:
Column A Column B
ABCD- Result1
EF Result2
BCD Result3
Ahora, ejemplos de cadenas que deberían devolver...
"Result1": "ABCD-", "ABCD-EFG", "ABCD-H"
"Result2": "EF", "EFG", "EFGHIIJKL"
"Result3": "BCD", "BCDXY"
"ABCD" no debería devolver ningún resultado.
Supongamos que la cadena buscada está en la celda C1.
¿Tengo que recurrir a una macro o hay alguna fórmula para ello?
UPD: Habrá varias cadenas buscadas que en realidad estarán ubicadas en una columna de otra hoja y no habrá comodines al principio. El valor que estoy buscando podría colocarse en la columna al lado de la columna con las cadenas buscadas.
UPD2: Supongamos el contenido de las columnas A y B en la Hoja 1 y el contenido de la Hoja 2 a continuación:
SoughtString ResultFound
ABCD- Result1
EF Result2
BCD Result3
BCDXY Result3
EFG Result2
ABCD-EFG Result1
EFGHIIJKL Result2
ABCD-H Result1
ABCD No match
Copiar la fórmula matricial ligeramente modificada de la respuesta aceptada en la celda B2:
=IFERROR(INDEX(Sheet1!B$2:B$4;MATCH(1;COUNTIF(A2;Sheet1!A$2:A$4&"*")*(Sheet1!A$2:A$4<>"");0));"No match")
Respuesta1
Suponiendo que tiene datos en las filas 2 a 10, puede usar esta "fórmula matricial"
=IFERROR(INDEX(B$2:B$10,MATCH(1,COUNTIF(C1,A$2:A$10&"*")*(A$2:A$10<>""),0)),"No match")
confirmado con CTRL+ SHIFT+ENTER
Respuesta2
No está claro qué papel juega C1. Si las cadenas buscadas ya existen en una columna, puede usarlas como lo que muestra como Col A de la Hoja2. Si están en otro lugar, puede crear la Col A simplemente haciendo referencia a la celda asociada en la otra lista. Por ejemplo, si la lista está en la columna Z, comenzando en la fila 2, A2 sería =Z2
y podría copiar esa fórmula en la columna A para completar previamente más celdas de las que necesita (estas permanecerán en blanco hasta que las necesite).
Si la lista de cadenas buscadas se crea una nueva entrada a la vez, puede simplemente colocar las nuevas entradas en la siguiente posición en cualquiera de las listas (Col Z o Col A). Si las nuevas entradas deben ir a C1 y cada nueva entrada reemplaza a la anterior, necesitará una macro o un programa VBA para crear la lista a partir de las entradas C1.
Comenzando desde el punto donde las cadenas buscadas estarán en una lista en la Col A mediante cualquiera de estos métodos, esto es lo que iría en la Col B. Supongamos que Result1 está en B2. La fórmula en B2 sería:
=IF(ISERROR(FIND(Sheet1!A2,A2)),"NO MATCH",IF(FIND(Sheet1!A2,A2)=1,A2,"NO MATCH"))
Copie la fórmula en la columna B para tantas como necesite. Puede completar previamente la Col B con una gran cantidad arbitraria de entradas y estas permanecerán en blanco hasta que haya un valor en la celda asociada en la Col A que produzca un resultado.