%2C%20))%20%E7%B5%84%E5%90%88%E9%81%A9%E7%94%A8%E6%96%BC%E7%AF%84%E5%9C%8D%EF%BC%8C%E4%BD%86%E4%B8%8D%E9%81%A9%E7%94%A8%E6%96%BC%E6%A0%BC%E5%BC%8F%E5%8C%96%E7%82%BA%20TABLE%20%E7%9A%84%E6%95%B8%E6%93%9A.png)
設定:
我有兩個包含資料的 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,這會選擇整個列,而不僅僅是行。