Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2013, 16:14   #1
alexp21
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 25
По умолчанию Актуализация дат в документе

Ребят помогите написать макрос, у меня в документе два листа, во втором листе в столбце «L» некоторые даты обновлены, нужно подставить их в первый, идентифицировать можно по уникальному значению номера в столбце «B». Буду Вам очень благодарен за помощь! Спасибо.
Вложения
Тип файла: rar Актуализация дат в документе.rar (11.7 Кб, 6 просмотров)
alexp21 вне форума Ответить с цитированием
Старый 05.09.2013, 21:48   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Есть решение на другом ресурсе. Качество не проверял, но вроде ТС устроило.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.09.2013, 22:30   #3
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
Public Sub UpdateDate()
  Dim Dic As Object, count&, ID(), D(), i&, tmp$
    With Sheets("Сентябрь копия")
        count = .Cells(Rows.count, 1).End(xlUp).Row
        ID = .[b1].Resize(count).Value
        D = .[l1].Resize(count).Value
    End With
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.comparemode = 1
    For i = 1 To count
        Dic(Split(ID(i, 1), " ", 2)(0)) = D(i, 1)
    Next
    With Sheets("Сентябрь")
        count = .Cells(Rows.count, 1).End(xlUp).Row
        ID = .[b1].Resize(count).Value
        D = .[l1].Resize(count).Value
        For i = 1 To count
            tmp = Split(ID(i, 1), " ", 2)(0)
            If Dic.exists(tmp) Then D(i, 1) = Dic(tmp)
        Next
        .[l1].Resize(count).Value = D
    End With
End Sub
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 06.09.2013, 12:22   #4
alexp21
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 25
По умолчанию

Спасибо Вам за помощь! Макрос делает то что нужно, вот только последнюю дату он почему то не изменил (L 25,26,27) если Вам не сложно можете подсказать как это исправить, Спасибо.
alexp21 вне форума Ответить с цитированием
Старый 06.09.2013, 12:41   #5
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Возможно я неправильно понял постановку задания, но
Цитата:
Сообщение от alexp21 Посмотреть сообщение
...идентифицировать можно по уникальному значению номера в столбце «B»
- для строк 25 и 26 номера из столбца B одинаковы
- строка 27 имеет одинаковой номер в B и равные значения в L
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 06.09.2013, 12:57   #6
alexp21
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 25
По умолчанию

Все верно, в строках 21, 22, 23, 24 столбце "В" номера тоже одинаковы, и Ваш макрос верно проставил для них обновленные значения дат в столбце "L", но в последнем случае почему то этого не сделал.
alexp21 вне форума Ответить с цитированием
Старый 06.09.2013, 13:15   #7
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

При написании макроса подразумевал что номера в строках не повторяются ...
На листе "Сентябрь" все строки с одинаковыми номерами имеют одинаковую дату? иначе какую из них принимать для сравнения? например в строках 21, 22,23 одна дата, в строке 24 - текст (разделители запятая)
Аналогично с листом "Сентябрь копия"
P.S. может необходимо устанавливать наибольшую дату ...
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 06.09.2013, 13:23   #8
alexp21
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 25
По умолчанию

Наибольшую, именно, если номера в столбце "B" совпадают, то для всех проставляется наибольшая, Ваш макрос так и сделал в предпоследнем случае, а в последнем почему то не изменил, пробовал ставить другие даты , но это не помогло.
alexp21 вне форума Ответить с цитированием
Старый 06.09.2013, 13:32   #9
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
Public Sub UpdateDate()
  Dim Dic As Object, count&, ID(), D(), i&, sTmp$, dTmp As Date
    With Sheets("Сентябрь копия")
        count = .Cells(Rows.count, 1).End(xlUp).Row
        ID = .[b1].Resize(count).Value
        D = .[l1].Resize(count).Value
    End With
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.comparemode = 1
    For i = 1 To count
        sTmp = Split(ID(i, 1), " ", 2)(0)
        dTmp = Replace(D(i, 1), ",", ".")  ' возможно необходима корректировка в зависимости от локализации
        If Dic.exists(sTmp) = False Then GoTo 1
        If Dic(sTmp) < dTmp Then
1:            Dic(sTmp) = dTmp
        End If
    Next
    With Sheets("Сентябрь")
        count = .Cells(Rows.count, 1).End(xlUp).Row
        ID = .[b1].Resize(count).Value
        D = .[l1].Resize(count).Value
        For i = 1 To count
            sTmp = Split(ID(i, 1), " ", 2)(0)
            If Dic.exists(sTmp) Then D(i, 1) = Dic(sTmp)
        Next
        .[l1].Resize(count).Value = D
    End With
End Sub
на неконкретные вопросы даю неконкретные ответы ...

Последний раз редактировалось Step_UA; 06.09.2013 в 13:34.
Step_UA вне форума Ответить с цитированием
Старый 06.09.2013, 13:41   #10
alexp21
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 25
По умолчанию

Отлично, это то что нужно! Спасибо вам огромное!
И еще если позволите один вопрос - Подскажите пожалуйста, каким образом можно выполнить сортировку, так чтобы даты в столбце «L» шли по возрастанию, но при этом одинаковые ФИО людей в столбце «I» группировались независимо от даты?
alexp21 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество знаков в документе cw_o Microsoft Office Word 1 07.09.2012 12:01
Навигация в документе kanapfelka Microsoft Office Word 20 24.09.2010 19:54
Поиск в текстовом документе. nolz Помощь студентам 1 07.12.2009 19:37
Поиск текста в документе haros Общие вопросы Delphi 0 28.07.2009 18:52
Пароль на Вордовском документе... Гриха Безопасность, Шифрование 2 11.11.2008 17:40