0 votos

Referencia dinámica a una celda de otra hoja basada en el texto

Estoy tratando de aprender cómo referirme "dinámicamente" a una celda de otra hoja dada una condición textual.

Tengo el siguiente escenario:

Ejemplo

Hay dos hojas etiquetadas como "A" y "B".

En la hoja "B" tengo una tabla de 12 filas y 4 columnas. En cada fila hay una etiqueta nutricional, como "Avena", seguida de columnas que indican las calorías correspondientes, los carbohidratos, etc. (véase la imagen siguiente).

enter image description here

En la hoja "A", hago referencia a cada alimento con una columna de cantidad posterior, como se muestra a continuación. enter image description here


Objetivo

A partir de la hoja "A", intento calcular las calorías de una comida, por lo que para cada ingrediente quiero multiplicar su cantidad por su equivalente en calorías por 100 gramos, como se indica en la hoja "B".

Requisito para la fórmula: la capacidad de referirse a una celda de otra hoja basada en una condición textual de la celda actual. Por ejemplo, quiero poder decir que la cantidad actual corresponde a "Avena" ya que la columna que precede a "Cantidad 1" es "Avena". Entonces, intuitivamente, tengo 50 gramos de avena (hoja A) que quiero multiplicar por las calorías de la avena (tomadas de la hoja B por 100g). Así que estoy tratando de expresar la fórmula de tal manera que automáticamente toma la celda anterior a la cantidad y trata su texto, aquí "Avena", como la referencia de la celda a la hoja B.

Es la primera vez que intento hacer referencias dinámicas. Mi intento (que no ha funcionado) ha sido hasta ahora en la línea de usar INDIRECT para referirse a la celda correspondiente de la hoja B dado el texto "Avena". Así que he probado:

A::Table 1::E2 * B::Table 1::Oats&"::B2"

Pero da un error. Incluso si funcionara, esto seguiría sin ser lo que realmente quería lograr, porque mi intención ideal es la capacidad de la celda anterior de B2 de la hoja B sin tener que especificar explícitamente "Avena".


Pregunta:

  1. ¿En qué me estoy equivocando con mi sintaxis en la fórmula al referirme a otra hoja (B) y tomar su celda correspondiente a la 2ª columna de la fila "Avena"? ¿Debería utilizar de alguna manera las funciones INDIRECT y ADDRESS juntos (como en este ejemplo )?

  2. ¿Existe una forma de generalizar esto, en la que ya no tengamos que especificar ni siquiera el alimento, sino que simplemente seleccionemos la cantidad y el alimento se tome automáticamente como la celda que le precede (por filas)?

1voto

Ana Puntos 71

Puede utilizar xlookup función. Si la tabla que contiene las calorías se llama Nutritional_value y con la estructura que has proporcionado en la captura de pantalla esta fórmula funciona: xlookup toma el valor de la columna Ingridient 1 en la tabla actual, busca el mismo valor en la primera columna (A) de la tabla Nutritional_value y devuelve el valor correspondiente de la columna Calories; luego se multiplica por el valor de la columna Quantity 1 y se divide por 100 (para obtener las calorías correctas):

XLOOKUP(Ingridient 1 'Monday - breakfast';Nutritional_value::A;Calories)×Quantity 1 'Monday - breakfast'÷100

Sin embargo, este enfoque no es muy escalable (hay que hacer lo mismo con otros ingridientes en una comida) y si se quiere hacer algún análisis es un mal diseño. IMHO mejor sería tener una fila por ingrediente (tabla de datos) y el análisis debe hacerse en la tabla dinámica

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X