Excel: INDEX (, MATCH (),)) kombinasi berfungsi dengan rentang tetapi tidak diformat data sebagai TABEL

1

Pengaturan:

Saya memiliki dua lembar Excel dengan data, keduanya "Diformat sebagai tabel". Satu adalah kumpulan data besar, dengan banyak baris dan kolom (bidang) dan yang lainnya adalah semacam "kamus", dengan hanya 2 baris dan 2 kolom (bidang).

Table1 (kumpulan data)

+----------------------------------------------------+
| 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        |

Table2 (dict)

+---------------------+
| productName | price |
+---------------------+
|  heavy      | 125   |
|  light      | 65    |

Apa yang perlu saya lakukan:

Yang perlu saya lakukan adalah membawa nilai-nilai ( harga produk ) dari kamus ke dalam kumpulan data besar, di mana nilai-nilai tertentu ( nama produk ) cocok.

Apa yang saya coba:

=INDEX(Table2[@price], MATCH(Table1[@productName], Table2[@productName], 0))

Saat bekerja dengan rentang, kombinasi ini bekerja dengan sangat baik. Namun, ketika saya melakukannya seperti ini, dengan data yang diformat sebagai tabel, hanya cocok di baris pertama, dari Table1.

Inilah hasil yang saya dapatkan :

+-------------------------------------------------+
| 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       |

Baris pertama dicocokkan dengan benar, baris kedua (sekali lagi sama dengan yang pertama) tidak ditemukan, dan dari sana nilai kesalahan mulai. Apa yang harus saya lakukan?

Terima kasih

Alex Starbuck
sumber

Jawaban:

3

Anda menyalahgunakan rentang bernama:

  • Table2[@productName] menunjuk ke satu elemen dalam tabel
  • Table2[productName] menunjuk ke seluruh kolom
  • Table2 menunjuk ke semua kolom dan garis tabel, header dikecualikan

Anda dapat melakukannya dengan mudah dengan VLOOKUP:

=INDEX(Table2,MATCH([@productName],Table2[productName],0),MATCH("price",Table2[#Headers],0))

Solusi alternatif:

=VLOOKUP([@productName],Table2,2,0)

=VLOOKUP([@productName],Table2,MATCH("price",Table2[#Headers]),0)

Atau, asalkan setiap productName unik, Anda dapat menggunakan SUMIF:

=SUMIF(Table2[productName],[@productName],Table2[price])
piko
sumber
Ini bekerja dengan sangat baik! Saya tidak menyadari bahwa saya tidak menggunakan "penyeleksi" dengan benar ( single @ elemen vs seluruh bidang vs # header ). Terima kasih lagi!
Alex Starbuck
Dengan senang hati! ;-)
piko
1

Ini seharusnya bekerja untuk Anda:

=INDEX(Table2[[#All],[Price]],MATCH([@productName],Table2[[#All],[ProductName]],0),1)

Catatan. penggunaan #ALL, ini memilih seluruh kolom, bukan hanya ROW.

PeterH
sumber