Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Вывод номера предыдущего месяца ("вечный" календарь), МЕСЯЦ+СЕГОДНЯ или СЧЁТЕСЛИ
 
Здравствуйте.
Прошу помочь в следующем вопросе:
данные в таблице заполняются в месяц, следующий за отчетным (за декабрь - в январе, за январь - в феврале, за февраль - в марте и т. д.);
значения в отдельных ячейках рассчитываются с учетом того, какой месяц отчетный (то есть, его номер из предыдущего пункта описания);
для вывода месяца использовалась формула =МЕСЯЦ(СЕГОДНЯ())-1 Но ее недостаток в том, что последний месяц года (12) всегда будет считать неправильно, т. к. следующий идет "январь", что в результате будет выдавать "ноль";
формула =СЧЁТЕСЛИ(B5:E5;"<>") лишена этого недостатка, т. к. считает количество заполненных (непустых) ячеек. Однако результат будет неверным, если есть хоть одна пустая ячейка.
Можно как-то объединить формулы, или модифицировать одну из них так, чтобы в результате выводился номер месяца, предшествующий текущему, и главное - не было ошибки "миллениум"? То есть, двенадцатого месяца.
Пример приложен.
 

Может так?

 
БМВ
Не могли бы кратко пояснить принцип работы?
=ПРОСМОТР(2;1/B13:E13;СТОЛБЕЦ(A13:D13))
- диапазоны B13:E13 и A13:D13 обязательно должны быть смещены один относительно другого? (при совпадении диапазонов результат получился для полного года такой же, как и при смещении).
- "искомое значение" должно быть равным только 2 ? При подстановке любого другого числа (кроме ноля) результата не меняется.
- почему только половина "просматриваемого вектора? 1/B13:E13
 
Здравствуйте. Извините, в файл не смотрел. Формулой получить номер предыдущего месяца (без ошибки из-за 1/12 месяцев) можно через такую формулу:
Код
=МЕСЯЦ(КОНМЕСЯЦА(СЕГОДНЯ();-1))
Кому решение нужно - тот пример и рисует.
 
optima, Здравствуйте... За Вами 5 лет на форуме и 29 сообщений, Некоторые интересные вопросы, и видно,что у Вас прекрасный инструментарий при работе в Excel. Подозрительно, что первое и последнее сообщение начинаются "как по шаблону", а некоторые Ваши комментарии, как минимум свидетельствуют о том, что, как минимум, Вы с экселем на Ты. Вам действительно надо пояснить принцип работы конструкции =просмотр(2;1/(что-то);Номер строки или столбца)  ?
 
optima,
Цитата
- диапазоны B13:E13 и A13:D13 обязательно должны быть смещены один относительно другого?
Можно и без смещения, но тогда надо отнять 1, А можно даже так ROW($A$1:$A$12)
Цитата
- "искомое значение" должно быть равным только 2 ?
По идее, любое большее или равно 1, но на практике все берут больше 1 для верности, а это для краткости 2,3 ...9
Цитата
- почему только половина "просматриваемого вектора? 1/B13:E13
Почему половина? тут нет деления на 2. Однако в данном случае, я не совсем прав, ибо все работает пока числа  в данных больше 1. Правильее так
=LOOKUP(2;1/(B13:E13<>0);ROW(A1:A12)) . в результате деления будет или ошибка или 1, ранее было или ошибка или что-то . Lookup Ищет последнее значение меньшее или равное 2 и игнорирует ошибки.

Akropochev, Поверьте, даже те кто помогают и считаются тут знатоками, учатся друг у друга. Так что нет ничего зазорного попросить пояснения. Тем более, что заданный вопрос касвенно выявил, что вчера я не дописал немного для универсальности.
 
Вместо =МЕСЯЦ(СЕГОДНЯ())-1 можно так
=--ТЕКСТ(МЕСЯЦ(СЕГОДНЯ())-1;"0;;12")
Изменено: АlехМ - 14 Мар 2018 10:17:25
Алексей М.
Страницы: 1
Читают тему (гостей: 1)