2015-08-17 4 views
0

У меня возникли проблемы с записью VLOOKUP для сортировки некоторых данных.VLOOKUPs для заполнения таблицы Excel

У меня есть одна таблицы, которая содержит данные, которые выглядят следующим образом:

MarkAsOfDate MaturityDate ZeroRate 
05-May-15   05-May-15 0.006999933 
05-May-15   06-May-15 0.006999933 
05-May-15   05-Jun-15 0.008996562 
05-May-15   06-Jul-15 0.008993128 
    ...    .... 

Я хочу сделать таблицу с каждым случаем, когда интервал между датами в первом и вторых столбцах ровно один месяц (например как с 05 по 15 мая и с 05 июня по 15 июня), так и с пробелами, где такой ценности нет.

Так что я сделал вторую таблицу, которая выглядит как:

MarkAsofDate MaturityDate Zero Rate 1M 
5-May-15   5-Jun-15  
6-May-15   6-Jun-15  
7-May-15   7-Jun-15  
8-May-15   8-Jun-15  
9-May-15   9-Jun-15  
....    .... 

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

Заранее спасибо.

+0

Будет ли когда-либо только один экземпляр MarkAsofDate ровно за 1 месяц до MaturityDate? Также - будут ли данные всегда заказываться так, как у вас есть? Сортируется сначала MarkAsofDate, а затем по дате погашения? –

ответ

1

У Vlookup есть некоторые ограничения, по мере того, как вы начинаете видеть. Другое предложение - Index/Match. Используйте это во второй таблице.

Примечание: Предполагаю, что ваш верхний стол находится в Sheet1. Поместите это в C2, во второй таблице (под заголовком «Зеро Rate 1M»):

=Index(Sheet1!$C:$C,match(A2&B2,Sheet1!$A:$A&Sheet1!$B:$B,0)) и ввести нажатием CTRL+SHIFT+ENTER.

0

Есть много способов сделать это - если данные сортируются сначала MarkAsofDate, а затем по дате погашения, самым простым методом будет добавить вспомогательный столбец на вкладке исходных данных - скажем, столбец E. В столбце E, начиная с E2 и скопированного вниз, введите [Предполагая, что MarkAsofDate является столбцом A & MaturityDate - столбец E]:

=IF(MONTH(B1)-MONTH(A1)=1,A1,"") 

В этой колонке будет показана MarkAsO fDate для каждого элемента, у которого есть MaturityDate через месяц после MarkAsOfDate; для всех остальных строк будет отображаться «».

На вкладке «Специальные данные» используйте функцию MATCH, чтобы найти строку в столбце E, которая соответствует MarkAsOfDate текущей строки. Мы также будем использовать функцию INDEX для возврата значения из этой строки в столбец C. Предполагая, что ваш первый лист с необработанными данными является листом1, а ваши данные специальных данных находятся на листе2, введите его в E2 на листе2 и перетащите вниз:

=INDEX(Sheet1!C:C,MATCH(A2,Sheet1!A:A,0)) 

Другой альтернативой (кроме рекомендованной BruceWayne Array Formula) является использование функции OFFSET. OFFSET создает новый диапазон, основанный на начальной точке, перемещая несколько ячеек вправо/влево/вверх/вниз для заданной высоты и ширины. В этом случае мы сначала используем MATCH, чтобы найти первый раз, когда MarkAsOfDate на Sheet1 соответствует Sheet2. Мы будем использовать эту информацию и OFFSET функцию, чтобы создать новый диапазон, который начинается там, и заканчивается в нижней части ваших данных, например, так:

=OFFSET(Sheet1!A1,MATCH(A2,Sheet1!A:A,0),1,COUNT(Sheet1!C:C),2) 

Тогда нам просто необходимо использовать ВПР на диапазон, который мы создали выше , например, так:

=VLOOKUP(B2,OFFSET(Sheet1!A1,MATCH(A2,Sheet1!A:A,0),1,COUNT(Sheet1!C:C),2),0) 

Эта вторая альтернатива избегает необходимости вспомогательного столбца, но является более сложным и может быть подвержены ошибкам, если ваши строки/столбцов изменить (потому что мы должны были жёстки пары вещей в OFFSET функции).Кроме того, OFFSET является изменчивым, то есть он пересчитывается всякий раз, когда вычисляется какая-либо ячейка, поэтому она может замедлить работу вашей книги, если у вас много ее строк. Исходя из этого, я рекомендую использовать метод вспомогательной колонки выше, или если вам удобно с формулами Array, используя ответ BruceWayne.

+0

В больших наборах данных, использующих OFFSET, это плохая идея, так как это «изменчивая» функция. – MatBailie

+0

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

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