Можно ли написать такую формулу?
От: idnickin  
Дата: 06.04.09 12:04
Оценка:
Здравствуйте, уважаемые форумчане.

Есть следующая задачка... По архиву полазил, но что-то ничего похожего не нашел...

Есть ячейка, в ячейке записан текст с произвольным кол-вом символов (но, допустим, не более 255). В этом тексте может встретиться, а может и не встретиться кусок вида (1965) — это год рождения (именно так, в скобках).
Есть вторая ячейка, в которой все данные записаны в виде "апр.07" — это день рождения.
Задача в том, чтобы взять текущий месяц и на основании данных из этих ячеек вычислить, сколько человеку исполняется лет. Если кусок вида (1965) в первой ячейке отсутствует, надо написать что-нибудь типа "нет данных"
Может кто поможет?
А то уже измучился весь...
Re: Можно ли написать такую формулу?
От: idnickin  
Дата: 06.04.09 12:05
Оценка:
совсем забыл... работаем в Экселе...
Re[2]: Можно ли написать такую формулу?
От: ZAMUNDA Земля для жалоб и предложений
Дата: 06.04.09 12:45
Оценка:
Здравствуйте, idnickin, Вы писали:

I>совсем забыл... работаем в Экселе...

Поигрался поигрался, вот что наформулил:
    With ThisWorkbook.ActiveSheet
        .Range("A1").Value = "апр.07"
        .Range("A4").Value = "8T3JHBKJD (2001) DKUJUNKJND D NCKJNCEKE"
        .Range("D4").Formula _
= "=IF(ISERR(FIND(""(19"",A4)),IF(ISERR(FIND(""(20"",A4))," _
& "FIND(""(20"",A4),MID(A4,FIND(""(20"",A4)+1,4))," _
& "MID(A4,FIND(""(19"",A4)+1,4))"
        .Range("F1").Formula = "=MID(A1,FIND(""."",A1,1)+1,255) & "" "" & LEFT(A1,FIND(""."",A1,1)-1) & "" ""& D4"
        .Range("D1").Formula = "=DATEVALUE(F1)"
        .Range("D2").Formula _
= "=DATEVALUE(MID(A1,FIND(""."",A1,1)+1,255) & """ _
& " "" & LEFT(A1,FIND(""."",A1,1)-1) & "" ""& IF(ISERR(FIND(""(19"",A4))," _
& "IF(ISERR(FIND(""(20"",A4)),FIND(""(20"",A4),MID(A4,FIND(""(20"",A4)+1,4))," _
& "MID(A4,FIND(""(19"",A4)+1,4)))"
        .Range("D1:D2").NumberFormat = "yyyy/mm/dd;@"
    End With

запусти макрос с открытым чистым листом.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re[3]: Извинняюсь, видимо, я не достаточно точно выразился..
От: idnickin  
Дата: 07.04.09 09:25
Оценка:
ZAM>запусти макрос с открытым чистым листом.

исходные данные записаны в виде двух столбцов...
первый вида "какие угодно символы, включая пробелы (1963) какие угодно символы, включая пробелы"
второй вида "07.апр"
хотелось бы формулу, которую можно записать в третий столбец, чтобы она возвращала либо то, сколько человеку исполнится лет в этом месяце, либо "нет данных"...
Re[4]: Извинняюсь, видимо, я не достаточно точно выразился..
От: ZAMUNDA Земля для жалоб и предложений
Дата: 07.04.09 13:03
Оценка:
Здравствуйте, idnickin, Вы писали:

I>исходные данные записаны в виде двух столбцов...

I>первый вида "какие угодно символы, включая пробелы (1963) какие угодно символы, включая пробелы"
I>второй вида "07.апр"
Это я уже слышал. Чем тебе моя формула не угодила?

I>хотелось бы формулу, которую можно записать в третий столбец, чтобы она возвращала либо то, сколько человеку исполнится лет в этом месяце, либо "нет данных"...

И это я уже слышал! В чём проблема? -- Покажи вариант, в котором моя формула не работает — буим думать.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re[4]: Про "нет данных" и возраст.
От: ZAMUNDA Земля для жалоб и предложений
Дата: 07.04.09 13:16
Оценка:
Здравствуйте, idnickin, Вы писали:

I>"нет данных"

Функция 'НД()'/'NA()' — вернёт ошибку "нет данных".
Функция 'СЕГОДНЯ()'/'TODAY()' — вернёт сегодняшний день, отними от даты рождения — получишь возраст.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.