2017-01-20 1 views
1

Я не могу разглядеть формулу, необходимую для возврата списка данных из всех строк в excel, которые находятся между двумя конкретными датами.Excel - перечисление данных из всех строк, которые находятся между двумя датами, при игнорировании пустых записей

Лист1 содержит следующие данные:

Date Region Reference 
01/01/2015 B 4458 
01/02/2015 B 6635 
01/02/2016 A 3175 
01/03/2016 C 2458 
01/03/2016 A 2194 
01/04/2016 A 3594 
01/04/2016 C 
01/05/2016 C 1654 
12/05/2016 B 3648 
01/06/2016 B 
01/06/2016 B 3296 

В Sheet2, я указать дату начала в ячейке C2 и конечную дату в ячейке C3.

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

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

Можно ли кому-нибудь помочь?

Благодаря

ответ

1

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

Формула ниже должна делать то, что вам нужно. * В выражении if выглядит как «и». -4 ближе к концу формулы - количество строк между исходной таблицей и верхней частью листа, на которой она находится. Последний 1 в конце формулы - это столбец, в который вы хотите получать данные, например, в vlookup. не забудьте использовать SHIFT + CTRL + ENTER, чтобы сделать его формулой массива.

=IFERROR(INDEX(Table1,SMALL(IF((Table1[Date]>=$C$2)*(Table1[Date]<=$C$3)*(Table1[Reference]<>""),ROW(Table1)-4),ROW(1:1)),1),"") 

формула, если вы не хотите форматировать в виде таблицы

=IFERROR(INDEX(Sheet2!$C$5:$E$15,SMALL(IF((Sheet2!$C$5:$C$15>=$C$2)*(Sheet2!$C$5:$C$15<=$C$3)*(Sheet2!$E$5:$E$15<>""),ROW(Sheet2!$C$5:$E$15)-4),ROW(1:1)),1),"") 

Используя формулу

I't не advisible скопировать и вставить эту формулу из одной ячейки в другую, но вместо скопируйте текст формулы и вставьте его, чтобы избежать изменения частей формулы.

следить за ROW (1: 1) в конце формулы, он определяет, какая строка из результатов сопоставления будет извлечена из данных, и она должна увеличиваться при автоматическом заполнении формулы вниз по листу.

Format as Table

Screenshot of result

+0

Большое спасибо Гордон. Есть ли способ сделать это без форматирования данных в виде таблицы? Я ценю вашу логику для этого, однако мне нужно надеяться применить это к очень большому набору данных, которые нужно использовать несколькими другими способами, а другие пользователи не хотят, чтобы я каким-либо образом изменял эти данные, в том числе изменение формата ... – user1883984

+0

Вы можете сделать это без преобразования в таблицу. замените кулак и последнюю таблицу1 в formala с диапазоном, который вы хотите индексировать. Заменить таблицу 1 [Дата] с диапазоном для столбца «Дата», сделайте то же самое для столбца «Ссылка». Я добавлю новую формулу к моему ответу, чтобы вы могли видеть, как она выглядит. – Gordon

+0

Преобразование в таблицу не означает, что вам необходимо изменить формат данных (colous ect.). Это больше касается определения набора данных, чтобы excel мог понять структуру.Если вы не используете таблицу, вам может потребоваться сделать ваши диапазоны выше набора данных, чтобы избежать необходимости изменять диапазоны каждый раз, когда будут добавлены новые данные. Если вы преобразуете данные в таблицу, вам не нужно это делать. – Gordon