Поиск даты функцией Find по определенному месяцу

Программирование на Visual Basic for Applications
Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Поиск даты функцией Find по определенному месяцу

Сообщение Calvin » 24.11.2009 (Вт) 18:05

Здраствуйте, уважаемые.
К примеру в ячейке А1 значение "10"
Мне нужно в определенном диапазоне, например в столбце B, в котором содержатся даты, найти даты 10-го месяца с помощью функции Find
Вроде бы теоретически все просто, но Find не понимает символ точки в дате, если это делать вот так:
Код: Выделить всё
With Columns(2)
    Set c = .Find("." & Cells(1,1) & ".", LookIn:=xlformulas, lookat:=xlpart)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do

       ''''''' бла бла бла

            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

с помощью модели "." & Cells(1,1) & "." можно было бы исключить поиск всех 10-х дней, а также с помощью
LookIn:=xlformulas поиск мог бы производиться вне зависимости от формата ячейки, где например мог бы быть формат dd.mmm.yyyy.
В общем, я так понимаю, что проблема именно в "разделителях" дат.
Помогите, кто может.
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Поиск даты функцией Find по определенному месяцу

Сообщение Antonariy » 24.11.2009 (Вт) 18:20

Эксель представляет себе дату в виде m/d/yyyy, то есть 01.10.2009 = 10/1/2009. Соответственно искать надо "10/". Однако если вы ищете январь, то заодно будете находить первое число каждого месяца. Если такой поиск жизненно необходим, то лучше сделать дополнительную колонку с формулой = МЕСЯЦ.
Лучший способ понять что-то самому — объяснить это другому.

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Re: Поиск даты функцией Find по определенному месяцу

Сообщение Calvin » 24.11.2009 (Вт) 18:31

Сейчас попробую....А вообще я наоборот стараюсь от этой колонки избавиться ;-)
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Re: Поиск даты функцией Find по определенному месяцу

Сообщение Calvin » 24.11.2009 (Вт) 18:46

Спасибо за подсказку, она мне помогла побороть проблему.
Вот решение...очень оригинально получается
Код: Выделить всё
With Columns(2)
    Set c = .Find( Cells(1,1) & "/*/2009", LookIn:=xlformulas, lookat:=xlpart)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do

       ''''''' бла бла бла

            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Re: Поиск даты функцией Find по определенному месяцу

Сообщение Calvin » 18.01.2010 (Пн) 19:24

Воспользовавшись собственным примером, хотелось бы ввести коррективу в эту проблему. Теперь никаких вопросов не возникнет
Код: Выделить всё
With Columns(2)
Set c =.Find( Cells(1,1) & "/*/????", LookIn:=xlformulas, lookat:=xlwhole)
        If Not c Is Nothing Then
        firstAddress = c.Address
        Do

       ''''''' бла бла бла

            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With


-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30

    TopList