3

Я пытаюсь найти значение, которое находится в любом из 3 столбцов. После нахождения значения в любом из 3 столбцов я хочу вернуть значение из 3-го столбца. Как мне это сделать. Увидеть ниже.

Code1 Code2 Code3 80281752 5000973 5000981 80281753 5000974 5000974 80281896 5000993 5000995 80281897 5000976 5000976 5000977 5000977 5000977

Например, я хочу найти 80281896 (находится в 1-м столбце) и вернуть его 5000995; Или поиск 5000973 (найден во 2-м столбце), и он вернет 5000981; Или ищите 5000980 (находится в 3-м столбце) и возвращайте 3-й столбец. Поиск должен выполнить поиск во всех 3 столбцах и вернуть значение в 3-м столбце. Я в тупике!

Спасибо.

2 ответа2

2

Попробуйте это решение. В этом примере пример данных находится в ячейках B3:D7. Чтобы эта формула работала, вы должны оставить одну ячейку перед данными, которые в любом случае обычно являются строкой вашего заголовка.

В E3 введите значение поиска.

В F3 положить следующую формулу.

=IFERROR(INDEX(D3:D7,SUMPRODUCT((B3:D7=E3)*(ROW(B3:B7)-ROW($B$2)))/SUMPRODUCT(((B3:D7=E3)*1))),"Not Found")

Эта формула использует SUMPRODUCT, чтобы получить относительное число строк, и обернутая в INDEX для третьего столбца извлекает значение из третьего столбца.

1

Поместите значение поиска в D1 и введите E1 :

=INDEX(C1:C6,IFERROR(IFERROR(MATCH(D1,C1:C6,0),MATCH(D1,B1:B6,0)),MATCH(D1,A1:A6,0)))

Сначала попробуйте сопоставить со столбцом C ; если это не удается, попробуйте столбец B ; если это не удается, попробуйте столбец А.

EDIT # 1:

Вот более общий инструмент. (для таблиц с большим количеством столбцов вложение будет проблематичным)

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

Public Function LastKolumn(v As Variant, rng As Range) As Variant
    Dim nRow As Long, nKolumn As Long

    nKolumn = rng.Columns.Count + rng.Column - 1
    nRow = rng.Find(what:=v, after:=rng(1)).Row

    LastKolumn = rng(nRow, nKolumn)
End Function

Пользовательские функции (UDF) очень просты в установке и использовании:

  1. ALT-F11 открывает окно VBE
  2. ALT-I ALT-M открывает новый модуль
  3. вставьте материал и закройте окно VBE

Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы использовать UDF из Excel:

=LastKolumn(A1,B1:Z100)

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

а подробности о UDF смотрите в:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Макросы должны быть включены, чтобы это работало!

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