Опять номер недели

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
vadim245
Сообщения: 100
Зарегистрирован: 11 май 2007, 15:46

Коллеги, выручайте - поиском нашел несколько похожих тем, но это не совсем мой случай. Проблема такая:

имеется лист excel, в котором ВЫДЕЛЕНЫ лишь некоторые ячейки, содержащие дату (например в таком формате даты: 31.05.71)

требуется заменить эти даты в том же листе на тех же самых местах на номера недели

номера недель должны получиться вида
701 - означает 2007 год 1-я неделя года
1026 - означает 2010 год 26-я неделя года
1153 - означает 2011 год 53-я неделя года
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

Попробуйте такой вариант:

Код: Выделить всё

[color=darkblue]Sub[/color] test()
    [color=darkblue]Dim[/color] cell [color=darkblue]As[/color] Range: Application.ScreenUpdating = [color=darkblue]False[/color]
    [color=darkblue]For[/color] [color=darkblue]Each[/color] cell [color=darkblue]In[/color] Selection.Cells
        [color=darkblue]If[/color] IsDate(cell) [color=darkblue]Then[/color]
            cell.NumberFormat = "@"
            cell = Year(cell) Mod 100 & _
                   Format(DateDiff("ww", DateSerial(Year(cell), 1, 1), cell, 2) + 1, "00")
        [color=darkblue]End[/color] [color=darkblue]If[/color]
    [color=darkblue]Next[/color] cell: Application.ScreenUpdating = [color=darkblue]True[/color]
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
Изображение
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
vadim245
Сообщения: 100
Зарегистрирован: 11 май 2007, 15:46

EducatedFool,
Спасибо, все именно так и нужно было
Ответить