设置:
我有两张包含数据的 Excel 表,均“格式化为表格”。一张是大型数据集,包含许多行和列(字段),另一张有点像“字典”,只有 2 行和 2 列(字段)。
表格1 (数据集)
+----------------------------------------------------+
| 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 |
表2 (字典)
+---------------------+
| productName | price |
+---------------------+
| heavy | 125 |
| light | 65 |
我需要做什么:
我需要做的是把价值观(产品价格)从字典中取出并放入大型数据集中,其中某些值(产品名称) 匹配。
我尝试过的:
=INDEX(Table2[@price], MATCH(Table1[@productName], Table2[@productName], 0))
当处理范围时,此组合效果很好。但是,当我像这样操作时,数据格式为表格,它仅匹配 Table1 的第一行。
这是我得到的结果:
+-------------------------------------------------+
| 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 |
第一行匹配正确,但第二行(与第一行相同)未找到,并且从那里开始出现错误值。我该怎么办?
谢谢
答案1
您滥用了命名范围:
Table2[@productName]
指向表中的单个元素Table2[productName]
指向整列Table2
指向表格的所有列和行,但不包括表头
您可以使用 VLOOKUP 轻松完成:
=INDEX(Table2,MATCH([@productName],Table2[productName],0),MATCH("price",Table2[#Headers],0))
替代解决方案:
=VLOOKUP([@productName],Table2,2,0)
=VLOOKUP([@productName],Table2,MATCH("price",Table2[#Headers]),0)
或者,如果每个产品名称都是唯一的,则可以使用 SUMIF:
=SUMIF(Table2[productName],[@productName],Table2[price])
答案2
这应该对你有用:
=INDEX(Table2[[#All],[Price]],MATCH([@productName],Table2[[#All],[ProductName]],0),1)
注意。使用#ALL,这将选择整个列,而不仅仅是一行。