Robin preguntó si hay una forma de hacer una BUSCARV que distinga entre mayúsculas y minúsculas.

Su tabla / rango de búsqueda tiene entradas que son similares (AbC y aBC) con la única diferencia en el caso de las letras. Ella no puede cambiar los valores (ponerlos todos en mayúsculas o minúsculas) ya que los valores únicos son vitales.

La función BUSCARV no tiene una forma de verificar el caso de la información; no distingue entre mayúsculas y minúsculas. Sin embargo, hay varias formas de solucionar este problema. Una forma es usar la función CODIGO para crear una columna intermedia que pueda ser buscada por BUSCARV. Suponiendo que sus datos originales están en la columna B, puede poner la siguiente fórmula en la celda A1 y copiarla en la columna:

=CODE(LEFT(B1,1))&"."&CODE(MID(B1,2,1))&"."&CODE(RIGHT(B1,1))

Esta fórmula analiza los primeros tres caracteres de lo que esté en la celda B1 y convierte esos caracteres en códigos de caracteres decimales separados por puntos. Por tanto, si A1 contuviera «ABC», entonces B1 contendría «65.66.67».

Suponiendo que el valor que desea ubicar está en la celda C1, podría usar lo siguiente como su fórmula VLOOKUP:

=VLOOKUP(CODE(LEFT(C1,1))&"."&CODE(MID(C1,2,1))&"."& CODE(MID(C1,3,1)), A:B,2,)

Otro enfoque es utilizar la función EXACTA para determinar la ubicación de lo que está buscando. Este enfoque no usa BUSCARV en absoluto; en su lugar, confiando en la función INDICE. La fórmula asume que las celdas que desea comparar están en la columna A y lo que desea devolver es la celda correspondiente en la columna B.

=IF(MIN(IF(EXACT(C1,$A$1:$A$100),ROW($A$1:$A$100)))=0,NA(), INDEX($B$1:$B$100,MIN(IF(EXACT(C1,$A$1:$A$100),ROW($A$1:$A$100)))))

Esta fórmula debe ingresarse como una fórmula de matriz (Shift + Ctrl + Enter). La primera parte de la fórmula (la primera instancia de EXACT) compara C1 (lo que está buscando) con cada valor en el rango A1: A100. Dado que se trata de una fórmula de matriz, en este caso terminará con 100 valores verdaderos / falsos, dependiendo de si hay una coincidencia exacta o no. Si hay una coincidencia, la primera función FILA devuelve la fila de la coincidencia y la función INDICE se usa para tomar el valor de la columna B en esa fila.

En algunos casos, es posible que desee crear su propia función definida por el usuario que hará la búsqueda por usted. El siguiente es un ejemplo de una macro de este tipo:

Function CaseVLook(compare_value, table_array As Range, _   Optional col_index As Integer = 1)

Dim c As Range     Dim rngColumn1 As Range

Application.Volatile

Set rngColumn1 = table_array.Columns(1)

CaseVLook = "Not Found"



'Loop first column     For Each c In rngColumn1.Cells         If c.Value = compare_value Then             CaseVLook = c.Offset(0, col_index - 1).Value             Exit For         End If     Next c End Function

Para usar la macro, simplemente llame a la función con el valor que desea encontrar (digamos celda C1), el rango en cuya primera columna se debe buscar (como A: B) y, opcionalmente, el desplazamiento de la columna dentro de ese rango, como aquí:

=CaseVLook(C1,A:B,2)

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (12222) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.

Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Making_VLOOKUP_Case_Sensitive [Hacer VLOOKUP sensible a mayúsculas y minúsculas].