INDEX для объединения двух столбцов, где один столбец занимает несколько строк - PullRequest
0 голосов
/ 04 ноября 2018

Моя INDEX формула, основанная на этом ответе на VLOOKUP путем объединения 2 столбцов для формирования уникального ключа вопроса не работает в ситуации, когда один из MATCH '* lookup_range аргументы охватывают несколько строк:

=INDEX($C$3:$C$5, MATCH($A$3 & $B$3, $A$3:$A$5 & $B$3:$B$5, 0))
                                     ^       ^
                                     |       |
                                     +---+---+
                                         |
                      lookup_range column spans multiple rows

Использование:

+---+------+-------+---------------+-----------------+----------------+
| \ |   A  |   B   |       C       |        D        |        E       |
+---+------+-------+---------------+-----------------+----------------+
| 1 |                               CARS                              |
+---+-----------------------------------------------------------------+
| 2 | Make | Model | Current price | Production Year | Original price |
+---+------+-------+---------------+-----------------+----------------+
| 3 | Audi | A1    | 40000         | 2013            | =MY_FORMULA    |
+---+------+-------+---------------+-----------------+----------------+
| 4 | Audi | A2    | 50000         | 2010            | =MY_FORMULA    |
+---+------+-------+---------------+-----------------+----------------+
| 5 | Audi | A3    | 60000         | 2014            | =MY_FORMULA    |
+---+------+-------+---------------+-----------------+----------------+

Это работает для этой таблицы:

+---+------+-------+-------+
| \ |   A  |   B   |   C   |
+---+------+-------+-------+
| 1 |        Prices        |
+---+----------------------+
| 2 | Make | Model | Price |
+---+------+-------+-------+
| 3 | Audi | A1    | 50000 |
+---+------+-------+-------+
| 4 | Audi | A2    | 60000 |
+---+------+-------+-------+
| 5 | Audi | A3    | 70000 |
+---+------+-------+-------+

Это не работает для этой таблицы (и я хочу это):

+---+------+-------+-------+
| \ |   A  |   B   |   C   |
+---+------+-------+-------+
| 1 |        Prices        |
+---+----------------------+
| 2 | Make | Model | Price |
+---+------+-------+-------+
| 3 | Audi | A1    | 50000 |
+---+      +-------+-------+
| 4 |      | A2    | 60000 |
+---+      +-------+-------+
| 5 |      | A3    | 70000 |
+---+------+-------+-------+

Очевидно, что значение AUDI может быть разбито на несколько строк, чтобы избежать избыточности и опечаток. Как мне этого добиться?

1 Ответ

0 голосов
/ 05 ноября 2018

Вы можете сделать это в Google Sheets с помощью vlookup следующим образом: -

=ArrayFormula(vlookup(E3&F3,{vlookup(row(A$3:A$10),{if(A$3:A$10<>"",row(A$3:A$10)),A$3:B$10},2)&B$3:B$10,C$3:C$10},2,false))

Внутренний vlookup находит последнюю строку, содержащую марку машины с номером строки, меньшим или равным текущей строке. Внешний vlookup может быть индексным соответствием, если вы предпочитаете, и вы можете расширить диапазоны до последней строки, поставив A $ 3: A и т. Д.

enter image description here


Для полноты, в Excel вам нужно уговорить функцию Index на предоставление массива, с которым вы можете работать смотри это

=INDEX(C$3:C$10,MATCH(E3&F3,INDEX(A$3:A$10,N(IF({1},MATCH(ROW(A$3:A$10),IF(A$3:A$10<>"",ROW(A$3:A$10))))))&B$3:B$10,0))

введено как формула массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...