Tengo un libro de Excel con varias hojas. La columna 'SheetA'!W:W
enumera el texto que se puede encontrar dentro del encabezado de una columna en la fila 'Sheet3'!1:1
. Por ejemplo, SheetA'!W42
contiene "B16". La celda Sheet3'!CB1
tiene el texto de encabezado "B16: Muestra 40", por lo que sería la columna de destino.
Ejemplo: muestra de'SheetA'!W42
Hay 'SheetA'!CD42
una fórmula que calcula el número de muestra que debe ubicarse 'Sheet3'!A:A
. En el siguiente ejemplo, CD42
se muestra el valor calculado "30", que se puede encontrar en 'Sheet3'!A32
.
Ejemplo: datos de muestra de la Hoja 3 que muestran los encabezados y la intersección del encabezado de la columna (B16) y la fila que contiene el número de muestra de interés:
El objetivo es recuperar el contenido de la celda en la Hoja3 donde se cruzan la columna y la fila buscadas y mostrarlo en una celda en la HojaA. En el ejemplo proporcionado, en 'Sheet3'!CB:CB
las intersecciones de la fila 32 y en la hoja A se mostraría el valor "0,1950581843".
¿Alguien sabe cómo se puede lograr esto?
Respuesta1
Teniendo en cuenta los datos anteriores, haré algunas suposiciones. Si todo esto es cierto, entonces HLOOKUP
podemos resolver fácilmente su problema. De lo contrario, es posible que se necesite una cadena de funciones más compleja.
Supuestos:
- Todos los textos de encabezado relevantes en
'Sheet3'!1:1
sonabsolutamente únicodentro de esa fila. - Todos los textos de encabezado relevantes
'Sheet3'!1:1
tienen el formato "[X]: [Y]", donde:- [X] es un valor que se puede encontrar en
'SheetA'!W:W
. - [Y] es el valor
'SheetA'!X:X
que está en la misma fila que [X].
- [X] es un valor que se puede encontrar en
- Todos los valores posibles en
'SheetA'!CD:CD
se pueden buscar en'Sheet3'!A:A
, de modo que estarán en la misma fila que los datos que se pretende recuperar.- Solo estoy poniendo esto porque noté que parece haber cierta repetición de estos valores en la Hoja 3 y quería asegurarme de que no hubiera condiciones bajo las cuales se pudiera buscar un valor
'SheetA'!CD:CD
que debiera compararse con otra columna. en su lugar (y por lo tanto puede producir resultados inexactos si coinciden'Sheet3'!A:A
). - Si dicha repetición es estrictamente para facilitar la lectura, ¿podría sugerir el uso de la función "Congelar paneles"?
- Solo estoy poniendo esto porque noté que parece haber cierta repetición de estos valores en la Hoja 3 y quería asegurarme de que no hubiera condiciones bajo las cuales se pudiera buscar un valor
- Todos los valores relevantes en
'Sheet3!A:A'
son perfectamente secuenciales, comenzando con "1" en'Sheet3'!A3
, nunca se repiten dentro de esa columna, ysiempreordenados de forma ascendente.
Dadas las suposiciones anteriores, construí mis propias hojas con datos de muestra que representan aproximadamente su escenario.
Aquí hay una captura de pantalla parcial de mi "Hoja3".
Y una toma parcial de mi "SheetA".
Lista de análogos:
- Hoja3
- Mi A:A = Tu A:A, BY:BY:, CA:CA:, ...
- Mi B:B, C:C, D:D, ... = Tu B:B, BZ:BZ, CB:CB, ...
- HojaA
- Mi A:A = Tu W:W
- Mi B:B = Tu X:X
- Mi C:C = Tu CD:CD
- Mi D:D = Cualquier columna en la que desee colocar los datos encontrados.
Como puedes ver en la segunda captura de pantalla, la fórmula para D2 es:
=HLOOKUP(CONCATENATE(A2,": ",B2),Sheet3!A:Y,C2+2,FALSE)
Tutorial paso a paso de la fórmula:
BUSCARHle permite buscar un valor horizontalmente a través de un rango de celdas y luego devolver el valor de una celda en la misma columna según una posición relativa de la fila. Se necesitan cuatro argumentos, tres de los cuales son obligatorios:valor de búsqueda,matriz de tabla,número_índice_fila,[rango de búsqueda]. Esta es la fórmula que hará el trabajo preliminar de encontrar los datos que desea en la Hoja3 y colocarlos en una celda de la HojaA.
- valor de búsquedaes el valor que desea
HLOOKUP
encontrar primero. Este valordebeestar presente en la primera fila dematriz de tabla, porque esa es la única fila en la que se buscará.HLOOKUP
Además, solo devolverá la primera coincidencia, por lo que estos valores también deben ser únicos. Aquí, estamos usandoCONCATENATE
para construir nuestra cadena de búsqueda.
- CONCATENARle permite juntar varias cadenas y valores en una sola cadena. Acepta una serie de argumentos, ordenados según la secuencia en la que deben colocarse en la cadena resultante.
- A2es nuestro primer argumento a favor
CONCATENATE
. La primera parte de nuestra cadena será el "Nombre de la muestra" en A2. - ": "es nuestro segundo argumento para
CONCATENATE
. Esto coloca los dos puntos y el espacio en la cadena, para que coincida con el formato de los valores en'Sheet3'!1:1
. - B2es nuestro último argumento a favor
CONCATENATE
. Extrae el "ID de muestra" de B2 para completar la sintaxis utilizada para los encabezados en'Sheet3'!1:1
.
- A2es nuestro primer argumento a favor
- CONCATENARle permite juntar varias cadenas y valores en una sola cadena. Acepta una serie de argumentos, ordenados según la secuencia en la que deben colocarse en la cadena resultante.
- matriz de tablaes una referencia a un rango de celdas
HLOOKUP
con las que desea trabajar. Recuerda que la primera fila debe ser la que contendrávalor de búsqueda. Este rango también debe abarcar todos los valores posibles paranúmero_índice_fila.- Hoja3!A:Yes una referencia a todas las celdas de las columnas A a la Y (las únicas llenas en mi Hoja3), de la Hoja3. Esto garantiza que cualquier dato agregado en nuevas filas más adelante también estará dentro del alcance de la búsqueda. Si los datos se fueran a agregar en nuevas columnas en lugar de filas, me gustaría usar la referencia
Sheet3!1:32
(actualmente, 32 es la última fila completa en mi Hoja3). Si se pueden agregar datos mediante nuevas columnasyfilas nuevas, haría referencia a la hoja completa conSheet3!1:1048576
oSheet3!A:XFD
. (Nota: la referencia a "hoja completa" es válida para Excel 2013. Las versiones anteriores pueden tener limitaciones de filas/columnas más pequeñas; ajústelas1048576
oXFD
según corresponda).
- Hoja3!A:Yes una referencia a todas las celdas de las columnas A a la Y (las únicas llenas en mi Hoja3), de la Hoja3. Esto garantiza que cualquier dato agregado en nuevas filas más adelante también estará dentro del alcance de la búsqueda. Si los datos se fueran a agregar en nuevas columnas en lugar de filas, me gustaría usar la referencia
- número_índice_filaes un número entero positivo que representa una posición de fila relativa a la fila superior enmatriz de tabla. Esto le indica
HLOOKUP
qué celda desea que se devuelva de la columna coincidente. Tenga en cuenta que, debido a queHLOOKUP
sólo buscavalor de búsquedaen la fila superior dematriz de tabla, ynúmero_índice_filano puede ser negativo, no puede usarloHLOOKUP
(al menos, no por sí solo) para devolver información de las celdas que están arribavalor de búsqueda.- C2+2- Dado que todos los valores
'Sheet3'!A:A
son perfectamente secuenciales, sin números enteros omitidos, y siempre estarán ordenados de forma ascendente, podemos usar esos valores (también representados en'SheetA'!C:C
) como indicadores de los números de fila de los datos que queremos encontrar. Está+2
ahí para tener en cuenta el hecho de que la numeración comienza con "1" en la fila 3 de la Hoja 3.
- C2+2- Dado que todos los valores
- [rango de búsqueda]es un argumento opcional para
HLOOKUP
. Las opciones son VERDADERO o FALSO, para indicar si desea permitir que las coincidencias aproximadas sean válidas o si solo se deben permitir coincidencias exactas. El valor predeterminado de Excel es VERDADERO (coincidencia aproximada) si se omite este argumento, lo que a menudo puede provocar un comportamiento no deseado, especialmente si la hoja no está ordenada de determinadas maneras. Entonces, especificamosFALSOaquí para asegurarnosHLOOKUP
de que solo se seleccione una coincidencia exacta.
Adaptando lo anterior al diseño de su hoja, creo que esta es la fórmula que necesitará para la celda 'SheetA'!CE42
(suponiendo que es donde desea colocar los datos):
=HLOOKUP(CONCATENATE(W42,": ",X42),Sheet3!A:CB,CD42+2,FALSE)
Tenga en cuenta que, si sus datos en la Hoja 3 van más a la derecha que la columna CB, y/o se pueden agregar datos a más columnas, querrá ajustarmatriz de tablarespectivamente.