2

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

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

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

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

2 ответа2

1

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

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

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


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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. В редакторе VBA нажмите Вставить> Модуль.
  3. Вставьте следующий код:
 Public Function GetValue(rngSearch As Range, rngInput As Range) As Variant
      Dim cell As Variant
      For Each cell In rngSearch
        If cell.Value = rngInput.Value Then
          GetValue = cell.Offset(0, 1)
          Exit For
        End If
      Next
 End Function

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

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .