Excel: Die Kombination INDEX( ,MATCH( ), )) funktioniert mit Bereichen, aber nicht mit als TABELLE formatierten Daten

Excel: Die Kombination INDEX( ,MATCH( ), )) funktioniert mit Bereichen, aber nicht mit als TABELLE formatierten Daten

Die Einrichtung:

Ich habe zwei Excel-Tabellen mit Daten, beide „als Tabelle(n) formatiert“. Eine ist ein großer Datensatz mit vielen Zeilen und Spalten (Feldern) und die andere ist eine Art „Wörterbuch“ mit nur 2 Zeilen und 2 Spalten (Feldern).

Tabelle 1 (Datensatz)

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

Tabelle 2 (Wörterbuch)

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

Was ich tun muss:

Was ich tun muss, ist, die Werte (Produktpreise) aus dem Wörterbuch in den großen Datensatz, wo bestimmte Werte (Produktnamen) übereinstimmen.

Was ich versucht habe:

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

Beim Arbeiten mit Bereichen funktioniert diese Kombination hervorragend. Wenn ich es jedoch so mache, mit als Tabellen formatierten Daten, stimmt es nur in der ersten Zeile von Tabelle1 überein.

Dies ist das Ergebnis, das ich erhalte:

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

Die erste Zeile stimmt richtig überein, die zweite Zeile (wieder dieselbe wie die erste) wird nicht gefunden und ab da beginnen die Fehlerwerte. Was soll ich tun?

Danke

Antwort1

Sie missbrauchen die benannten Bereiche:

  • Table2[@productName]zeigt auf ein einzelnes Element in der Tabelle
  • Table2[productName]zeigt auf die ganze Spalte
  • Table2zeigt auf alle Spalten und Zeilen der Tabelle, ausgenommen Überschriften

Mit SVERWEIS geht das ganz einfach:

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

Alternativlösungen:

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

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

Oder, vorausgesetzt, jeder Produktname ist eindeutig, können Sie SUMIF verwenden:

=SUMIF(Table2[productName],[@productName],Table2[price])

Antwort2

Das sollte für Sie funktionieren:

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

Hinweis: Durch die Verwendung von #ALL wird die gesamte Spalte ausgewählt, nicht nur eine ZEILE.

verwandte Informationen