Поиск в таблице Excel с индексами в нескольких столбцах

1253
Matthew Scouten

У меня есть таблица в Excel, выглядит примерно так:

Test1 100 test2 200 Test3 110 test4 210 Test5 120 test6 220 

Я хочу функцию, которая, учитывая тест 1 в качестве входа, вернет 100 И данный тест 2 вернет 200

LOOKUP, (V / H) LOOKUP и INDEX настаивают на едином непрерывном массиве для столбца индекса.

2
Вы ищете «стандартную» функцию Excel или VBA в порядке? Моим первым предложением было бы написать небольшую функцию vba, которая использует find, чтобы найти вашу ячейку 'testN' и вернуть столбец ячейки 1 вправо. DaveParillo 14 лет назад 2
Я бы порекомендовал вам всегда сначала рассмотреть структуру ваших данных. Кажется, у вас должен быть столбец идентификатора теста, а затем столбец с указанным числовым значением каждого теста. В любом случае, вы можете изменить способ создания таблицы? Кажется, это будет работать лучше, чем пытаться приспособить ваш текущий стол. Или посмотрите на ответы ниже, конечно. mindless.panda 14 лет назад 1
Проблема с VBA в том, что я никогда не использовал его. Насколько сложно интегрироваться со встроенными функциями? Matthew Scouten 14 лет назад 0
Может ли Test2 появиться в первом столбце .. или все значения поиска уникальны? Mark Nold 14 лет назад 0
Значение поиска должно быть уникальным. Matthew Scouten 14 лет назад 0
Я закончил тем, что делал реальные вычисления в другом формате на другом листе, а затем ссылался на эти ответы из обязательного формата отображения. Это отстой меньше, чем другие решения. Matthew Scouten 14 лет назад 0

2 ответа на вопрос

1
Toc

Если вы используете функцию IF (), это тривиальная задача, чтобы получить то, что вы просите.

1
Sux2Lose

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

=IFERROR(VLOOKUP(INPUTCELL,$A$1:$B$3,2,0),0)+IFERROR(VLOOKUP(INPUTCELL,$C$1:$D$3,2,0),0) 

Это будет работать только в Excel 2007, но может быть изменено в 2003 году. Возможно, это будет более сексуально, но это был первый раз, о котором я подумал. Обратите внимание, что если «Тест 1» находится в обоих столбцах, например, он добавит оба соответствующих значения.


Обновленный ответ: как предлагали другие комментаторы, я бы переоценил макет вашей электронной таблицы. Предполагая, что вы не можете изменить его, единственное масштабируемое решение, которое я вижу, это через VBA. Я не эксперт по VBA, так что, вероятно, есть более эффективные способы кодирования этого решения, но вот что я получил:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В редакторе VBA нажмите Вставить> Модуль.
  3. Вставьте следующий код:
 Открытая функция GetValue (rngSearch As Range, rngInput As Range) как вариант Тусклая ячейка как вариант Для каждой ячейки в rngSearch Если cell.Value = rngInput.Value Тогда GetValue = cell.Offset (0, 1) Выход для Конец, если следующий Конечная функция 

4 Чтобы использовать функцию типа «= GetValue (SearchRange, InputCell)» (без кавычек) в нужную ячейку, где InputCell - это ячейка с надписью «Test 1», «Test 2» и т. Д., А SearchRange - это область, которую вы используете. в поиске.

Вам нужно будет включить макросы, чтобы это работало.

Если бы действительно было 2 столбца, которые бы работали, но фактические данные имеют 12 или около того. немного громоздко Matthew Scouten 14 лет назад 0

Похожие вопросы