2016-01-25 2 views
0

текущий код:С помощью VLOOKUP есть еще один вариант для COL_INDEX_NUM?

VLOOKUP("*"& SPID &"*",Carriers,6,FALSE) 

Я в настоящее время есть 26 пронумерованных COL_INDEX_NUMs на динамической таблице претерпевают несколько обновлений. Если мне нужно добавить больше столбцов между столбцами, в настоящее время мне нужно перенумеровать все мои формулы VLOOKUP, чтобы они совпадали.

На моем основном листе я легко его построил с первой ячейкой данных: col_index_num 2 на всем пути до 26. Когда мне нужно добавить еще одну ячейку между ними, я должен скорректировать все эти формулы индивидуально и провести аудит чтобы они все соответствовали.

Есть ли способ, которым это может быть динамичным, или это просто функция, которая нуждается в лучшем планировании?

Единственное, что я нашел в Интернете, это сайты, которые упомянули кодировку VBA, которую я не смогу включить.

Большое спасибо!

EDIT: Я действительно включил код, но на самом деле это был скорее вопрос относительно VLOOKUP в целом. Я отправил, чтобы убедиться, что все поняли мой вопрос, связанный с тем, где находится 6.

Разрешение:

=INDEX(Carriers,MATCH(SPID,INDEX(Carriers,0,1),0),MATCH(A3,INDEX(Data!1:1,1,0),0)) 

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

Carriers = все мои данные на листе с именем Data минус заголовки.
Данные 1: 1 = Мои заголовки на одном листе.
SPID = 4-значный буквенно-цифровой номер для вызова информации.

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

Надеюсь, это поможет кому-то!

+0

Вы можете использовать формулу соответствия, чтобы найти правильный индекс столбца: вместо '6', вы бы поставить что-то вроде' MATCH («ColumnTitle» , 1: 1,0) '. Где «ColumnTitle» - это метка в строке 1. Другое примечание: если ваш диапазон поиска не начинается в столбце A, то ссылку на полную строку нужно будет изменить, чтобы начать с того же столбца, что и диапазон поиска: '$ B $ 1: $ AZ $ 1' –

+0

Вместо жесткого кодирования '6' в формуле Vlookup используйте ссылку на ячейку. Создайте еще один рабочий лист (если это необходимо), со своим сопоставлением столбцов, затем вы сможете обновить« сопоставление », лист, и вся формула будет ссылаться на значения на этом листе, когда они меняются, результат формулы изменится. –

ответ

2

Используйте формулу INDEX вместо VLOOKUP.

E.g. =INDEX(Carriers,MATCH("*" & SPID & "*",$A:$A,0),MATCH("MyColumnHeader",1:1,0))

  • Первый аргумент будет ссылочный таблицу - вы можете вставить дополнительные столбцы, если вы хотите,
  • Второй аргумент столбец вы ищете свой номер ИСП для (это не должно быть первый столбец) - это вернет номер строки.
  • Третий аргумент - это заголовок столбца, который вы ищете, - это вернет номер столбца.

Хорошая ссылка сайт: http://www.contextures.com/xlFunctions03.html

Редактировать:
В качестве обновления, формула выше опорной колонны А и строка 1 рабочего листа, а не Носители диапазоне. =INDEX(Carriers,MATCH("*SPID*",INDEX(Carriers,0,1),0),MATCH("MyColumnHeader",INDEX(Carriers,1,0),0))
Эта формула ссылка на столбец 1 Перевозчиков с использованием INDEX(Carriers,0,1) и строки 1, используя INDEX(Carriers,1,0)

+0

To @Darren Bartrup-Cook, спасибо! Сначала я подумал, что было бы слишком сложно понять но используя встроенные инструменты Excel для объяснения каждого поля, я понял, что это не так сложно. – traveler84

+1

Попал мне в прошлое, прежде чем я был уверен в том, как это сделать INDEX. Очень универсально, поэтому стоит того. –

Смежные вопросы