Поиск последней записи за месяц.
Rioran
Дата: Суббота, 07.06.2014, 14:27 |
Сообщение № 1
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация:
290
±
Замечаний:
0% ±
Excel 2013
Всем привет. Думаю над задачей, как можно из списка разных дат найти последнюю запись в указанном месяце и прошу Вас, уважаемые форумчане, посодействовать. В файле, например, если мы ищем последнюю запись за февраль 2014, формула должна вернуть номер строки 20-го февраля 2014, при этом если есть несколько 20-х чисел, нужно последнее. Сейчас делаю пользовательскую функцию на VBA под это дело, но если есть возможность решить формулой - буду Вам благодарен.
Всем привет. Думаю над задачей, как можно из списка разных дат найти последнюю запись в указанном месяце и прошу Вас, уважаемые форумчане, посодействовать. В файле, например, если мы ищем последнюю запись за февраль 2014, формула должна вернуть номер строки 20-го февраля 2014, при этом если есть несколько 20-х чисел, нужно последнее. Сейчас делаю пользовательскую функцию на VBA под это дело, но если есть возможность решить формулой - буду Вам благодарен. Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Ответить
Сообщение Всем привет. Думаю над задачей, как можно из списка разных дат найти последнюю запись в указанном месяце и прошу Вас, уважаемые форумчане, посодействовать. В файле, например, если мы ищем последнюю запись за февраль 2014, формула должна вернуть номер строки 20-го февраля 2014, при этом если есть несколько 20-х чисел, нужно последнее. Сейчас делаю пользовательскую функцию на VBA под это дело, но если есть возможность решить формулой - буду Вам благодарен. Автор - Rioran Дата добавления - 07.06.2014 в 14:27
ikki
Дата: Суббота, 07.06.2014, 14:35 |
Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация:
504
±
Замечаний:
0% ±
Excel 2003, 2010
формула массива Код
=МАКС(ЕСЛИ((МЕСЯЦ($A$1:$A$18)=C2)*(ГОД($A$1:$A$18)=C1);СТРОКА($A$1:$A$18)))
формула массива Код
=МАКС(ЕСЛИ((МЕСЯЦ($A$1:$A$18)=C2)*(ГОД($A$1:$A$18)=C1);СТРОКА($A$1:$A$18)))
ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Ответить
Сообщение формула массива Код
=МАКС(ЕСЛИ((МЕСЯЦ($A$1:$A$18)=C2)*(ГОД($A$1:$A$18)=C1);СТРОКА($A$1:$A$18)))
Автор - ikki Дата добавления - 07.06.2014 в 14:35
Rioran
Дата: Суббота, 07.06.2014, 14:42 |
Сообщение № 3
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация:
290
±
Замечаний:
0% ±
Excel 2013
ikki , за февраль возвращает 11-е число
ikki , за февраль возвращает 11-е числоRioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Ответить
Сообщение ikki , за февраль возвращает 11-е числоАвтор - Rioran Дата добавления - 07.06.2014 в 14:42
ikki
Дата: Суббота, 07.06.2014, 14:44 |
Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация:
504
±
Замечаний:
0% ±
Excel 2003, 2010
формула должна вернуть номер строки
кто писал?
формула должна вернуть номер строки
кто писал?ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Сообщение отредактировал ikki - Суббота, 07.06.2014, 14:44
Ответить
Сообщение формула должна вернуть номер строки
кто писал?Автор - ikki Дата добавления - 07.06.2014 в 14:44
Rioran
Дата: Суббота, 07.06.2014, 14:46 |
Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация:
290
±
Замечаний:
0% ±
Excel 2013
ikki , то, что надо, спасибо! =) Даже макрос не успел дописать =) Уточните, пожалуйста, что делает ЕСЛИ с массивом типа {0;0;1;1;1;1;1;0;0; ... }? *** По 11-му числу - это я в шоке был =)
ikki , то, что надо, спасибо! =) Даже макрос не успел дописать =) Уточните, пожалуйста, что делает ЕСЛИ с массивом типа {0;0;1;1;1;1;1;0;0; ... }? *** По 11-му числу - это я в шоке был =)Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Сообщение отредактировал Rioran - Суббота, 07.06.2014, 14:47
Ответить
Сообщение ikki , то, что надо, спасибо! =) Даже макрос не успел дописать =) Уточните, пожалуйста, что делает ЕСЛИ с массивом типа {0;0;1;1;1;1;1;0;0; ... }? *** По 11-му числу - это я в шоке был =)Автор - Rioran Дата добавления - 07.06.2014 в 14:46
ikki
Дата: Суббота, 07.06.2014, 14:50 |
Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация:
504
±
Замечаний:
0% ±
Excel 2003, 2010
вычисляет массив и передаёт его функции МАКС. для каждой единички (здесь она играет роль ИСТИНА) - номер строки, для каждого нолика (ЛОЖЬ) - ничего не делает, остается ЛОЖЬ соответственно, МАКС выбирает максимальное значение из номеров строк и значений ЛОЖЬ
вычисляет массив и передаёт его функции МАКС. для каждой единички (здесь она играет роль ИСТИНА) - номер строки, для каждого нолика (ЛОЖЬ) - ничего не делает, остается ЛОЖЬ соответственно, МАКС выбирает максимальное значение из номеров строк и значений ЛОЖЬ ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Сообщение отредактировал ikki - Суббота, 07.06.2014, 14:51
Ответить
Сообщение вычисляет массив и передаёт его функции МАКС. для каждой единички (здесь она играет роль ИСТИНА) - номер строки, для каждого нолика (ЛОЖЬ) - ничего не делает, остается ЛОЖЬ соответственно, МАКС выбирает максимальное значение из номеров строк и значений ЛОЖЬ Автор - ikki Дата добавления - 07.06.2014 в 14:50
ikki
Дата: Суббота, 07.06.2014, 14:56 |
Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация:
504
±
Замечаний:
0% ±
Excel 2003, 2010
вариант формулы (но тоже массивная) Код
=МАКС(ЕСЛИ(ТЕКСТ($A$1:$A$18;"МГГГГ")=C2&C1;СТРОКА($A$1:$A$18)))
вариант формулы (но тоже массивная) Код
=МАКС(ЕСЛИ(ТЕКСТ($A$1:$A$18;"МГГГГ")=C2&C1;СТРОКА($A$1:$A$18)))
ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Ответить
Сообщение вариант формулы (но тоже массивная) Код
=МАКС(ЕСЛИ(ТЕКСТ($A$1:$A$18;"МГГГГ")=C2&C1;СТРОКА($A$1:$A$18)))
Автор - ikki Дата добавления - 07.06.2014 в 14:56
Rioran
Дата: Суббота, 07.06.2014, 15:02 |
Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация:
290
±
Замечаний:
0% ±
Excel 2013
ikki , интересно, щас попробую и этот =) А подскажите, как надо вбивать долларовые гвозди, чтобы в зелёных ячейках получить, что надо? (Файл)
ikki , интересно, щас попробую и этот =) А подскажите, как надо вбивать долларовые гвозди, чтобы в зелёных ячейках получить, что надо? (Файл)Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Ответить
Сообщение ikki , интересно, щас попробую и этот =) А подскажите, как надо вбивать долларовые гвозди, чтобы в зелёных ячейках получить, что надо? (Файл)Автор - Rioran Дата добавления - 07.06.2014 в 15:02
ikki
Дата: Суббота, 07.06.2014, 15:04 |
Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация:
504
±
Замечаний:
0% ±
Excel 2003, 2010
для D2 Код
=МАКС(ЕСЛИ(ТЕКСТ($A$1:$A$18;"МГГГГ")=C2&$C$1;СТРОКА($A$1:$A$18)))
для D2 Код
=МАКС(ЕСЛИ(ТЕКСТ($A$1:$A$18;"МГГГГ")=C2&$C$1;СТРОКА($A$1:$A$18)))
ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Ответить
Сообщение для D2 Код
=МАКС(ЕСЛИ(ТЕКСТ($A$1:$A$18;"МГГГГ")=C2&$C$1;СТРОКА($A$1:$A$18)))
Автор - ikki Дата добавления - 07.06.2014 в 15:04
Rioran
Дата: Суббота, 07.06.2014, 15:07 |
Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация:
290
±
Замечаний:
0% ±
Excel 2013
ikki , понял. Получается, месяц в этом случае, куда ссылаемся, будет динамической ссылкой и для каждой ячейки будет свой. А год шпорим намертво, чтобы для всех был одинаков. Вариант с текстом изящнее и эстетически более приятен =)
ikki , понял. Получается, месяц в этом случае, куда ссылаемся, будет динамической ссылкой и для каждой ячейки будет свой. А год шпорим намертво, чтобы для всех был одинаков. Вариант с текстом изящнее и эстетически более приятен =)Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Ответить
Сообщение ikki , понял. Получается, месяц в этом случае, куда ссылаемся, будет динамической ссылкой и для каждой ячейки будет свой. А год шпорим намертво, чтобы для всех был одинаков. Вариант с текстом изящнее и эстетически более приятен =)Автор - Rioran Дата добавления - 07.06.2014 в 15:07
Nic70y
Дата: Суббота, 07.06.2014, 15:10 |
Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 8984
Репутация:
2359
±
Замечаний:
0% ±
Excel 2010
Код
=ПОИСКПОЗ(ДАТА(C$1;C2+1;1)-1;A$1:A$18;1)
не не пойдет (не внимательно прочел)
Код
=ПОИСКПОЗ(ДАТА(C$1;C2+1;1)-1;A$1:A$18;1)
не не пойдет (не внимательно прочел)Nic70y
ЮMoney 41001841029809
Сообщение отредактировал Nic70y - Суббота, 07.06.2014, 15:12
Ответить
Сообщение Код
=ПОИСКПОЗ(ДАТА(C$1;C2+1;1)-1;A$1:A$18;1)
не не пойдет (не внимательно прочел)Автор - Nic70y Дата добавления - 07.06.2014 в 15:10
ikki
Дата: Суббота, 07.06.2014, 15:19 |
Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация:
504
±
Замечаний:
0% ±
Excel 2003, 2010
изящнее и эстетически более приятен
но, скорее всего, более медленный (имхо - преобразование в текст и сравнение строк по любому медленнее чем тупые проверка равенства и попарное перемножение) впрочем, на небольших объемах незаметно
изящнее и эстетически более приятен
но, скорее всего, более медленный (имхо - преобразование в текст и сравнение строк по любому медленнее чем тупые проверка равенства и попарное перемножение) впрочем, на небольших объемах незаметноikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Ответить
Сообщение изящнее и эстетически более приятен
но, скорее всего, более медленный (имхо - преобразование в текст и сравнение строк по любому медленнее чем тупые проверка равенства и попарное перемножение) впрочем, на небольших объемах незаметноАвтор - ikki Дата добавления - 07.06.2014 в 15:19
krosav4ig
Дата: Суббота, 07.06.2014, 23:52 |
Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
еще вариант если даты будут отсортированы по возрастанию Код
=ПОИСКПОЗ(0;$A$1:$A$18-ДАТА(C1;C2;ДЕНЬ($A$1:$A$18)))
или если в случайном порядке Код
=МАКС(ЕСЛИ($A$1:$A$18-ДАТА(C1;C2;ДЕНЬ($A$1:$A$18));;СТРОКА($A$1:$A$18)))
или если нужно получить дату Код
=МАКС(ЕСЛИОШИБКА(($A$1:$A$18-ДАТА(C1;C2;ДЕНЬ($A$1:$A$18)))^0;$A$1:$A$18))
еще вариант если даты будут отсортированы по возрастанию Код
=ПОИСКПОЗ(0;$A$1:$A$18-ДАТА(C1;C2;ДЕНЬ($A$1:$A$18)))
или если в случайном порядке Код
=МАКС(ЕСЛИ($A$1:$A$18-ДАТА(C1;C2;ДЕНЬ($A$1:$A$18));;СТРОКА($A$1:$A$18)))
или если нужно получить дату Код
=МАКС(ЕСЛИОШИБКА(($A$1:$A$18-ДАТА(C1;C2;ДЕНЬ($A$1:$A$18)))^0;$A$1:$A$18))
krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Воскресенье, 08.06.2014, 00:08
Ответить
Сообщение еще вариант если даты будут отсортированы по возрастанию Код
=ПОИСКПОЗ(0;$A$1:$A$18-ДАТА(C1;C2;ДЕНЬ($A$1:$A$18)))
или если в случайном порядке Код
=МАКС(ЕСЛИ($A$1:$A$18-ДАТА(C1;C2;ДЕНЬ($A$1:$A$18));;СТРОКА($A$1:$A$18)))
или если нужно получить дату Код
=МАКС(ЕСЛИОШИБКА(($A$1:$A$18-ДАТА(C1;C2;ДЕНЬ($A$1:$A$18)))^0;$A$1:$A$18))
Автор - krosav4ig Дата добавления - 07.06.2014 в 23:52
vikttur
Дата: Воскресенье, 08.06.2014, 01:30 |
Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Поиск строки в возрастающем диапазоне, не массивная: Код
=ПОИСКПОЗ(КОНМЕСЯЦА(ДАТА(C1;C2;1);0);A1:A18)
Дата: Код
=ПРОСМОТР(КОНМЕСЯЦА(ДАТА(C1;C2;1);0);A1:A18)
Поиск строки в возрастающем диапазоне, не массивная: Код
=ПОИСКПОЗ(КОНМЕСЯЦА(ДАТА(C1;C2;1);0);A1:A18)
Дата: Код
=ПРОСМОТР(КОНМЕСЯЦА(ДАТА(C1;C2;1);0);A1:A18)
vikttur
Сообщение отредактировал vikttur - Воскресенье, 08.06.2014, 01:36
Ответить
Сообщение Поиск строки в возрастающем диапазоне, не массивная: Код
=ПОИСКПОЗ(КОНМЕСЯЦА(ДАТА(C1;C2;1);0);A1:A18)
Дата: Код
=ПРОСМОТР(КОНМЕСЯЦА(ДАТА(C1;C2;1);0);A1:A18)
Автор - vikttur Дата добавления - 08.06.2014 в 01:30
_Boroda_
Дата: Понедельник, 09.06.2014, 00:53 |
Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16691
Репутация:
6491
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
И еще для числа Код
=ПРОСМОТР(ДАТАМЕС(C2&-C1;1)-1;A1:A18)
или, как у Виктора Код
=ПОИСКПОЗ(КОНМЕСЯЦА(C2&-C1;0);A1:A18)
для номера строки Код
=ПОИСКПОЗ(ДАТАМЕС(C2&-C1;1)-1;A1:A18)
если растягиваем вниз, то Код
=ПРОСМОТР(ДАТАМЕС(C2&-C$1;1)-1;A$1:A$18)
И еще для числа Код
=ПРОСМОТР(ДАТАМЕС(C2&-C1;1)-1;A1:A18)
или, как у Виктора Код
=ПОИСКПОЗ(КОНМЕСЯЦА(C2&-C1;0);A1:A18)
для номера строки Код
=ПОИСКПОЗ(ДАТАМЕС(C2&-C1;1)-1;A1:A18)
если растягиваем вниз, то Код
=ПРОСМОТР(ДАТАМЕС(C2&-C$1;1)-1;A$1:A$18)
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение И еще для числа Код
=ПРОСМОТР(ДАТАМЕС(C2&-C1;1)-1;A1:A18)
или, как у Виктора Код
=ПОИСКПОЗ(КОНМЕСЯЦА(C2&-C1;0);A1:A18)
для номера строки Код
=ПОИСКПОЗ(ДАТАМЕС(C2&-C1;1)-1;A1:A18)
если растягиваем вниз, то Код
=ПРОСМОТР(ДАТАМЕС(C2&-C$1;1)-1;A$1:A$18)
Автор - _Boroda_ Дата добавления - 09.06.2014 в 00:53