сколько дней прошло от 1 января соответствующего года .....

Автор id76088672, 31.12.2012, 19:35

« назад - далее »

id76088672

Очень нужна ваша помощь
Вычислить средствами Excel, сколько дней прошло от 1 января соответствующего года по григорианскому календарю до даты нового года в мусульманском летосчислении. Например, вводим 1432 год, находим по таблице, что новый 1432 год по мусульманскому календарю наступил 8 декабря 2010 года.

Вычисляем, что с 1 января 2010 года до 8 декабря 2010 года прошел 341 день. Расчет должен проводиться для любого значения мусульманского года из таблицы.\

з датами я вообще плохо знаком ПОМОГИТЕ

Serge 007

Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

id76088672

Цитата: Serge 007 от 31.12.2012, 20:33
Цитата: Александр Шукалович от 31.12.2012, 19:35
...вводим 1432 год...
В Excel для Windows даты начинаются с 1900-го года, для Mac - с 1904
Ранние даты в Excel недоступны

Там есть даты с 1900 и по 2015 помогите хотя бы с этими датамиПОЖАЛУЙСТА

kuklp

Сереж, речь о:
Цитата: Александр Шукалович от 31.12.2012, 19:35мусульманском летосчислении.
В файле автора есть таблица соответствий.
Александр Шукалович, ВПР и РАЗНДАТ Вам в помощь.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

id76088672

Цитата: Serge 007 от 31.12.2012, 21:45
В файле нет дат, только текст
Получается это нельзя никак сделать ???

kuklp

Ну, ты же Гуру! Знаешь, как это победить. ;D
P.S. кто-нить писал Алексею, что уведомления о новых сообщениях не приходят на почту?
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

kuklp

#6
С UDF, иначе формула будет монструозной.
Public Function mDate(st$)
    Dim s, a, i&
    s = Split("янв фев мар апр май июн июл авг сен окт ноя дек")
    a = Split(st)
    For i = 0 To 11
        If InStr(a(1), s(i)) Then Exit For
    Next
    mDate = DateDiff("y", DateSerial(a(2), 1, 1), DateSerial(a(2), i+1, a(0)))
End Function

И вариант без цикла:
Public Function mDate(st$)
    Dim s, a, i&
    s = Split("января февраля марта апреля мая июня июля августа сентября октября ноября декабря")
    a = Split(st)
    i = Application.Match(a(1), s, 0)
    mDate = DateDiff("y", DateSerial(a(2), 1, 1), DateSerial(a(2), i, a(0)))
End Function


Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Serge 007

Цитата: Александр Шукалович от 31.12.2012, 21:54
Получается это нельзя никак сделать ???
Можно

Цитата: KuklP от 31.12.2012, 21:55
Ну, ты же Гуру! Знаешь, как это победить. ;D
Я не Гуру
Но как победить, конечно знаю ;)
Но влом. Да и ТЗ я не люблю

Цитата: KuklP от 31.12.2012, 22:30
...формула будет монструозной.
Формула будет ДЛИННОЙ
Проще текст в даты переделать, тогда пойдут и ВПР с вычитанием дат
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

kuklp

Я уже и сам понял, что это студент >:( 
Александр Шукалович, на форуме есть раздел "Работа". Вам туда.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

id76088672

использовать макрос я не могу
Кому не лень напишите если можете

MCH

Даты в столбце C указаны в виде текста а не даты, поэтому простым ВПР и вычислением не обойдешься
Можно преобразовать дату "на лету" в формуле массива (формулы массива вводятся нажатием Ctrl+Shift+Enter):
=ИНДЕКС(ПОДСТАВИТЬ(ЛЕВСИМВ(C4:C119;ПОИСК(" ";C4:C119)+3)&ПРАВСИМВ(C4:C119;5);"мая";"май")-("1/"&ПРАВСИМВ(C4:C119;4));ПОИСКПОЗ(L3;B4:B119;))
Без массивного ввода:
=ПРОСМОТР(L3;B4:B119;ПОДСТАВИТЬ(ЛЕВСИМВ(C4:C119;ПОИСК(" ";C4:C119)+3)&ПРАВСИМВ(C4:C119;5);"мая";"май")-("1/"&ПРАВСИМВ(C4:C119;4)))

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

id76088672

ВСЕМ ОГРОМНОЕ СПАСИБО

отдельно спасибо MCH за формулу