%2C%20))%20funciona%20con%20rangos%20pero%20no%20con%20datos%20formateados%20como%20TABLA.png)
La puesta en marcha:
Tengo dos hojas de Excel con datos, ambas "formateadas como tabla(s)". Uno es un gran conjunto de datos, con muchas filas y columnas (campos) y el otro es una especie de "diccionario", con sólo 2 filas y 2 columnas (campos).
Tabla 1 (conjunto de datos)
+----------------------------------------------------+
| month | week | productName | price | sold pcs. |
+---------------------------------------------------+|
| jan | 1 | heavy | (formula) | 25 |
| jan | 2 | heavy | (formula) | 51 |
| jan | 3 | heavy | (formula) | 06 |
| jan | 4 | heavy | (formula) | 00 |
| jan | 1 | light | (formula) | 39 |
| jan | 2 | light | (formula) | 11 |
| jan | 3 | light | (formula) | 98 |
Tabla 2 (dictar)
+---------------------+
| productName | price |
+---------------------+
| heavy | 125 |
| light | 65 |
Lo que necesito hacer:
Lo que tengo que hacer es traer los valores (precios de productos) del diccionario al gran conjunto de datos, donde ciertos valores (nombres de productos) fósforo.
Lo que probé:
=INDEX(Table2[@price], MATCH(Table1[@productName], Table2[@productName], 0))
Cuando se trabaja con rangos, esta combinación funciona de manera excelente. Sin embargo, cuando lo hago así, con datos formateados como tablas, solo coincide en la primera fila de la Tabla1.
este es el resultado que obtengo:
+-------------------------------------------------+
| month | week | productName | price | sold pcs. |
+-------------------------------------------------+
| jan | 1 | heavy | 125 | 25 |
| jan | 2 | heavy | #N/A | 51 |
| jan | 3 | heavy | #VALUE | 06 |
| jan | 4 | heavy | #VALUE | 00 |
| jan | 1 | light | #VALUE | 39 |
| jan | 2 | light | #VALUE | 11 |
| jan | 3 | light | #VALUE | 98 |
La primera fila coincide correctamente, la segunda fila (nuevamente igual que la primera) no se encuentra y desde allí comienzan los valores de error. ¿Qué tengo que hacer?
Gracias
Respuesta1
Estás haciendo un mal uso de los rangos nombrados:
Table2[@productName]
apunta a un solo elemento en la tablaTable2[productName]
apunta a toda la columnaTable2
apunta a todas las columnas y líneas de la tabla, excluidos los encabezados
Puedes hacerlo fácilmente con una BUSCARV:
=INDEX(Table2,MATCH([@productName],Table2[productName],0),MATCH("price",Table2[#Headers],0))
Soluciones alternativas:
=VLOOKUP([@productName],Table2,2,0)
=VLOOKUP([@productName],Table2,MATCH("price",Table2[#Headers]),0)
O, siempre que cada nombre de producto sea único, puede utilizar SUMIF:
=SUMIF(Table2[productName],[@productName],Table2[price])
Respuesta2
Esto debería funcionar para ti:
=INDEX(Table2[[#All],[Price]],MATCH([@productName],Table2[[#All],[ProductName]],0),1)
Nota. el uso de #ALL, esto selecciona toda la columna, no solo una FILA.