MS Excel — поиск первой строки после определенной даты

#excel #date

#excel #Дата

Вопрос:

Допустим, у меня есть электронная таблица со следующим, и для удобства скажем, что все это начинается с ячейки A1.

 ---------------------------------------
| Date          | Item      | Account |
---------------------------------------
| 01/09/2011    | Testing 1 | USD     |
| 03/09/2011    | Testing 2 | USD     |
| 11/09/2011    | Testing 3 | USD     |
| 20/10/2011    | Testing 4 | JD      |
| 22/10/2011    | Testing 5 | JD      |
| 25/10/2011    | Testing 6 | USD     |
| 03/11/2011    | Testing 7 | USD     |
| 05/11/2011    | Testing 8 | JD      |
---------------------------------------
  

Теперь я хочу запустить отчет за месяц, начиная с 1/10/2011 и заканчивая 31/10/2011. Мне нужно найти первую строку в начальной дате или после нее, а затем получить каждую последующую строку до конечной даты. Если я смогу выяснить, как получить ссылку на строку для первой и конечной дат, тогда я смогу вычислить промежуточные строки (очевидно!).).

Я смог выполнить такого рода совпадения только для точных совпадений, т.Е.. понятия не имею, как сделать совпадения «больше / меньше».

Как бы я мог сопоставить столбцы даты и учетной записи?

Излишне говорить, что это должно быть в формуле.

Ответ №1:

 =match(date(2011,10,1),a2:a9,1) 1
=match(date(2011,10,31),a2:a9,1)
  

Первая формула показывает строку для первой записи за октябрь, вторая формула для последнего дня. Данные должны быть отсортированы в порядке возрастания.

Комментарии:

1. Только что протестировано, и это работает для приведенных выше данных. Но если я изменю данные, чтобы включить 1/10/2011 в качестве одной из дат, то он все равно добавит 1 к строкам и получит следующую строку.

2. Предполагая, что у вас Office 2007 или выше: =IFERROR(match(date(2011,10,1),a2:a9,0),match(date(2011,10,1),a2:a9,1) 1) должен обрабатывать случай здесь 1-Oct-11 в списке

Ответ №2:

Используйте следующую формулу массива для поиска строки, содержащей самую раннюю дату, которая равна или больше даты, указанной в ячейке C1 (в вашем случае это 1 октября).

 =MATCH(MIN(IF($A$1:$A$30>=C1,1,9999)*$A$1:$A$30),$A$1:$A$30,0)
  

Список дат находится в ячейках от A1 до A30. Измените ссылки по мере необходимости.
Данные не нужно сортировать по возрастанию или убыванию.

Используйте следующую формулу массива для поиска строки, содержащей последнюю дату, которая равна или меньше даты, указанной в ячейке D1 (в вашем случае это 31 октября). Данные не нужно сортировать по возрастанию или убыванию.

 =MATCH(MAX(IF($A$1:$A$30<=D1,1,0)*$A$1:$A$30),$A$1:$A$30,0)
  

Если вам нужны самые ранние и самые последние даты, используйте следующие формулы массива.

 =MIN(IF($A$1:$A$30>=C1,1,9999)*$A$1:$A$30)

=MAX(IF($A$1:$A$30<=D1,1,0)*$A$1:$A$30)
  

Все формулы, используемые выше, являются формулами массива. Чтобы ввести формулу массива, используйте Control Shift Enter вместо Enter .

Виджайкумар Шетье, Гоа, Индия

Ответ №3:

Я бы рекомендовал использовать для этого сводную таблицу. Посмотрите на вторую ссылку в разделе «Шаблоны Excel — сводная таблица» на этой странице сайта Contextures.

Комментарии:

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