%2C%20))%20%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%81%AF%E7%AF%84%E5%9B%B2%E3%81%A7%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81TABLE%20%E3%81%A8%E3%81%97%E3%81%A6%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%95%E3%82%8C%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A7%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82.png)
セットアップ:
データを含む Excel シートが 2 つあり、どちらも「テーブルとしてフォーマット」されています。1 つは多数の行と列 (フィールド) を持つ大規模なデータ セットで、もう 1 つは 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 |
最初の行は適切に一致していますが、2 行目 (これも最初の行と同じ) が見つからず、そこからエラー値が始まります。どうすればよいでしょうか?
ありがとう
答え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)
または、各 productName が一意である場合は、SUMIF を使用できます。
=SUMIF(Table2[productName],[@productName],Table2[price])
答え2
これはうまくいくはずです:
=INDEX(Table2[[#All],[Price]],MATCH([@productName],Table2[[#All],[ProductName]],0),1)
注意: #ALL を使用すると、行だけでなく列全体が選択されます。