Я пытаюсь избежать избыточности вычисления одного и того же индекса столько раз, сколько существует записей, поэтому я должен предварительно рассчитать индекс с помощью MATCH в скрытой ячейке над моей таблицей?
Стоит также отметить, что хотя мои столы не будут массивными, они также не будут маленькими. Вероятно, будет около 6 таблиц в каждой с одним или двумя VLOOKUPS (полный столбец) с общим количеством записей в сотнях.
Точнее, я собираюсь создать набор таблиц в Excel и буду эмулировать полезности правильной реляционной базы данных, используя функцию VLOOKUP для получения значения связанной таблицы, но я буду использовать MATCH функция, чтобы получить индекс столбца, который я хочу, по его заголовку. Ниже приводится фактическая формула, которую я буду использовать:
=VLOOKUP([@ForeignKey],RelatedTable,MATCH(RelatedTable[[#Headers],[ItemName]],RelatedTable[#Headers],0),FALSE)
'Broken down by parameters VLOOKUP( Lookup_value := [@ForeignKey] Table_array := RelatedTable Col_index_num := 'Return of MATCH MATCH( Lookup_value := RelatedTable[[#Headers],[ItemName]] Lookup_array := RelatedTable[#Headers] Match_type := 0 'Exact Match Range_lookup := FALSE 'Exact Match
РЕДАКТИРОВАТЬ:
Первая таблица - это таблица с первичным ключом. Последние два являются одним из двух примеров, на которые я ссылаюсь.
Table_Products ╔════╦════════╦═══════════════╦═══════════╗ ║ ║ A ║ B ║ C ║ ╠════╬════════╬═══════════════╬═══════════╣ ║ 1 ║ ItemID ║ ItemName ║ ItemPrice ║ ╠════╬════════╬═══════════════╬═══════════╣ ║ 2 ║ 1 ║ Stylus ║ $ 25.00 ║ ╠════╬════════╬═══════════════╬═══════════╣ ║ 3 ║ 2 ║ Mech Keyboard ║ $ 120.00 ║ ╠════╬════════╬═══════════════╬═══════════╣ ║ 4 ║ 3 ║ Monitor ║ $ 750.00 ║ ╚════╩════════╩═══════════════╩═══════════╝ Table_Transactions EITHER LIKE THIS ╔════╦════════╦════════╦═════╦═══════════════════════╗ ║ ║ A ║ B ║ C ║ D ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 1 ║ CustID ║ ItemID ║ Qty ║ ItemName ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 2 ║ 101 ║ 3 ║ 1 ║ VLOOKUP(,,Match(,,),) ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 3 ║ 102 ║ 3 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 4 ║ 103 ║ 3 ║ 1 ║ ... ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 5 ║ 104 ║ 2 ║ 3 ║ ... ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 6 ║ 105 ║ 1 ║ 8 ║ ... ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 7 ║ 106 ║ 2 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 8 ║ 107 ║ 2 ║ 1 ║ ... ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 9 ║ 108 ║ 2 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 10 ║ 109 ║ 1 ║ 4 ║ ... ║ ╠════╬════════╬════════╬═════╬═══════════════════════╣ ║ 11 ║ 110 ║ 2 ║ 16 ║ ... ║ ╚════╩════════╩════════╩═════╩═══════════════════════╝ OR LIKE THIS (D1 cell is NOT part of the table) ╔════╦════════╦════════╦═════╦═════════════════╗ ║ ║ A ║ B ║ C ║ D ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 1 ║ ║ ║ ║ Match(,,) ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 2 ║ CustID ║ ItemID ║ Qty ║ ItemName ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 3 ║ 101 ║ 3 ║ 1 ║ VLOOKUP(,,D$1,) ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 4 ║ 102 ║ 3 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 5 ║ 103 ║ 3 ║ 1 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 6 ║ 104 ║ 2 ║ 3 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 7 ║ 105 ║ 1 ║ 8 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 8 ║ 106 ║ 2 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 9 ║ 107 ║ 2 ║ 1 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 10 ║ 108 ║ 2 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 11 ║ 109 ║ 1 ║ 4 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 12 ║ 110 ║ 2 ║ 16 ║ ... ║ ╚════╩════════╩════════╩═════╩═════════════════╝