Страницы: 1
RSS
Найти число по дате в справочнике периодов
 
Доброго времени суток, дорогие фанатики Excel !
Прошу Вашей помощи. У меня англоязычная версия процессора. В моем примере нужно скорректировать или переписать формулу в ячейке F17. Там должна появляться цифра, соответствующая заданной в С17 дате согласно справочнику С2:Е15, но независимо от года. Например, если в С17 я задала дату 24.12.2019, то в F17, согласно справочнику я жду цифру 7, но там почему-то 9. Помогите пожалуйста сделать корректную формулу в F17. Заранее премного благодарю и желаю Вам удачных решений в Новом году! 😉
Да не обманет вас Excel !
 
Код
=ИНДЕКС(R4C5:R15C5;ПОИСКПОЗ(ДАТА(1983+(ТЕКСТ(RC[-3];"ММДД")<"1224");МЕСЯЦ(RC[-3]);ДЕНЬ(RC[-3]));R[-13]C[-3]:R[-2]C[-3]))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, но в предложенном Вами варианте в формуле есть указание на конкретный год из справочника. Однако год может быть совершенно любым. В том-то и проблема, что я не должна привязываться к году, а только к месяцу и дню. Если в справочнике поменять года например на 1925 и 1926, то такая фориула не сработает. Помогите пожалуйста обойти значение годов вообще. Данные справочника статичны для каждого расчета, допустимо только их перевод в другой формат или в другой вид справочника дополнительными формулами. А конечный расчет должен быть основан лишь на попадании в период дня и месяца. Заранее спасибо за ответ!
Да не обманет вас Excel !
 
в связи с тем что условия задачи, видимо, являются государственной тайной и не подлежат огласке - судьба вам для этих секретных данных подбирать формулу самостоятельно
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, давайте, вы не будете отвечать если не знаете решения. Пусть ответит кто-нибудь другой, умный. Тем более, что условия задания вполне понятны. Не нужно предлагать нерабочие решения. Встречайте лучше Новый год.
Да не обманет вас Excel !
 
т.е. формула написанная в #2, для примера из #1 определила неправильное значение?
или какой у вас критерий деления решений на рабочие и не рабочие?
у меня, например, простой критерий деления задач на решаемые и нет: если в задаче описаны условия задачи (и у нее есть решение) такая задача решаемая, а если нет условий задачи, посади хоть 100 мудрецов - решения не будет, ну, за одним исключением если посадить решать задачу много людей рано или поздно кто-то угадает решение
а отвечать мне или отмечать - я разберусь сам, без чьих бы то ни было указаний))
удачи!
Изменено: Ігор Гончаренко - 28.12.2019 18:12:21
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
=LOOKUP(--(TEXT(EDATE(C17;1);"Д.М")&".2000");DATE(2000;MOD(MONTH(C4:C15);12)+1;DAY(C4:C15));E4:E15)
Можно поджаться чуток
=LOOKUP(--(TEXT(EDATE(C17;1);"Д.М")&".0");DATE(2000;MOD(MONTH(C4:C15);12)+1;DAY(C4:C15));E4:E15)
Изменено: БМВ - 28.12.2019 20:27:22
По вопросам из тем форума, личку не читаю.
 
массивка
=ЕСЛИ(ИЛИ(--ТЕКСТ(C17;"ММДД")>--ТЕКСТ(D15;"ММДД");--ТЕКСТ(C17;"ММДД")<--ТЕКСТ(C5;"ММДД"));E4;ПРОСМОТР(--ТЕКСТ(C17;"ММДД");--ТЕКСТ(C5:C15;"ММДД");E5:E15))
Соблюдение правил форума не освобождает от модераторского произвола
 
Страшно смотреть на двухэтажные формулы. Макрос в модуль листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C17")) Is Nothing Then
    Application.EnableEvents = False
Dim iDate As Date
Dim i As Integer
  For i = 4 To 15
  iDate = DateSerial(Year(Cells(i, "C")), Month(Target), Day(Target))
    If iDate >= Cells(i, "C") And iDate <= Cells(i, "D") Then
      Cells(17, "F") = Cells(i, "E")
      Exit For
    End If
  Next
End If
    Application.EnableEvents = True
End Sub
 
Спасибо, друзья! 😘😘😘
Да не обманет вас Excel !
 
buchlotnik, спасибо вам большое за формулу! Вы очень помогли мне. Но, к моему сожалению, я не смогла до конца разобраться в ее построении. Поэтому помогите мне пожалуйста построить подобную формулу в ячейке В47 нового примера. Справочник находится в диапазоне А4:В34. В А47 произвольная дата, относительно которой нужно найти формулой число из справочника. Т.е. если я задала 18.05.2020, то в В47 я хочу получить цифру 8, согласно справочнику.к
Да не обманет вас Excel !
 
Ирина Трегуб,
А макрос не подошел?
 
Kuzmich, макрос тоже хорош! Но мне сложнее адаптиррвать его из примера в реальную книгу. Спасибо!
Да не обманет вас Excel !
 
Цитата
сложнее адаптиррвать его из примера в реальную книгу
Для вашего последнего примера, макрос в модуль листа "Число дня"
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A47")) Is Nothing Then
    Application.EnableEvents = False
Dim FoundDay As Range
  Set FoundDay = Range("A4:A34").Find(Day(Target), , xlValues, xlWhole)
      Cells(47, "B") = Cells(FoundDay.Row, "B")
End If
    Application.EnableEvents = True
End Sub
 
Kuzmich, не могу смотреть на  многострочные макросы заменяющие =VLOOKUP(DAY(A47);A4:B44;2;)  :D

Ирина Трегуб,  ну понятно , второй случай к первому имеет отношение только словом справочник :-) мой вариант  из #7 не подходил?
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо Вам большое за формулу! Вы гений! Однако первый мой вопрос по расчету так и не нашел работоспособного ответа. Может быть Вы сможете предложить короткую и однозначно правдивую формулу? Посмотрите пожалуйста пример. В справочнике есть исходные данные. Там диапазоны дат и числа. А в разделе расчет я задала несколько произвольных дат и протестировала нахождение чисел, соответствующих диапазону (без учета года), предложенными способами. Ни одна формула не показала работоспособность, т.е. встречаются ошибочные результаты. Я окрасила их красным. Помогите пожалуйста найти рабочую формулу для поставленной задачи.
Да не обманет вас Excel !
 
Код
=ИНДЕКС($E$4:$E$15;ПОИСКПОЗ(ДАТАМЕС(D20;(ГОД($C$4)-ГОД(D20)+(ДАТАМЕС(D20;(ГОД($C$4)-ГОД(D20))*12)<$C$4))*12);$C$4:$C$15))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх