Функции Excel для возврата первой строки или первого столбца из диапазона?(для лучшего 2-стороннего поиска в таблице данных) - PullRequest
4 голосов
/ 06 августа 2011

Итак, я пытаюсь выполнить классический двухсторонний поиск из таблицы данных, а именно:

     Jan-00   Feb-00   Mar-00
Joe
Bill
Steve

Итак, я хочу найти значение для «Джо» для «Мар-00»".

Этот тип поиска обычно выполняется с использованием комбинации функций INDEX и MATCH.Недостаток этого подхода заключается в том, что MATCH может действовать только на одномерный диапазон, поэтому в большой электронной таблице с большим количеством таблиц вам придется в конечном итоге определить 3 диапазона на таблицу вместо одного (один для данных, один для строки заголовка,один для левой колонки).

Я хотел бы иметь возможность сделать что-то вроде этого:

index(data1,match("Mar-00",getrow(mydata,1)),match("Joe",getcolumn(mydata,1)))

Есть ли что-то подобное в Excel (или, совсем другой способ сделатьэто, может быть, какая-то новая функция в Excel)?

Ответы [ 3 ]

11 голосов
/ 06 августа 2011

Это классическое использование для VLOOKUP (или связанного с ним HLOOKUP):

=VLOOKUP("Joe", mydata, 4, FALSE)

Вы также можете использовать INDEX, чтобы вывести всю строку или столбец из диапазона (или2-D массив), передав ноль в качестве одного из параметров:

=VLOOKUP("Joe", mydata, MATCH("Mar-00", INDEX(mydata, 1, 0), 0), FALSE)

Предполагается, что ваши "mydata" - это вся таблица, включая заголовки строк и столбцов.

(OfКонечно, вы также можете просто сделать то, что вы сделали выше, заменив getrow и getcolumn на вызовы INDEX.)

5 голосов
/ 17 апреля 2013

Используйте формулу offset.Для некоторого именованного диапазона myrange первая строка:

offset(myrange,0,0,1)

Аналогично, первый столбец:

offset(myrange,0,0,,1)
0 голосов
/ 06 августа 2011

Хотя это может быть не самый эффективный подход, вы можете использовать SUMPRODUCT для выполнения этого запроса. Однако вам нужно иметь рабочую таблицу, содержащую значения, а затем ссылаться на них на листе отображения.

=SUMPRODUCT(--('RawData'!$A$1:$A$4="Joe"),--('RawData'!$B$1:$B$4="Mar-00"),'RawData'!$C$1:$C$4)

Где:

  • 'RawData'! $ A $ 1: $ A $ 4 - это столбец, содержащий имена
  • 'RawData'! $ B $ 1: $ B $ 4 - это столбец, содержащий требуемый заголовок (в данном случае это дата)
  • 'RawData'! $ C $ 1: $ C $ 4 - это столбец, содержащий требуемое значение
...