Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/обновление даты при новых данных в строке. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по Excel » обновление даты при новых данных в строке. (Формулы/Formulas)
обновление даты при новых данных в строке.
skawn Дата: Понедельник, 07.11.2016, 09:19 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, есть таблица с ведением клиентской базы, руководитель пожелал видеть работу за неделю.
Сейчас в таблице есть столбец с датой, но он заполняется только при внесении новой строки (новый клиент от такой то даты).
Можно ли как-то сделать обновление даты при любых изменениях в строке? тогда мы бы могли фильтром выбрать даты прошедшей недели и увидеть все что произошло за неделю. Тоже конечно не очень удобно, постоянно в фильтре искать нужные даты, но хоть так. Если есть другие решения буду рад услышать.
К сообщению приложен файл: 4123296.xlsx(14Kb)
 
Ответить
СообщениеЗдравствуйте, есть таблица с ведением клиентской базы, руководитель пожелал видеть работу за неделю.
Сейчас в таблице есть столбец с датой, но он заполняется только при внесении новой строки (новый клиент от такой то даты).
Можно ли как-то сделать обновление даты при любых изменениях в строке? тогда мы бы могли фильтром выбрать даты прошедшей недели и увидеть все что произошло за неделю. Тоже конечно не очень удобно, постоянно в фильтре искать нужные даты, но хоть так. Если есть другие решения буду рад услышать.

Автор - skawn
Дата добавления - 07.11.2016 в 09:19
_Boroda_ Дата: Понедельник, 07.11.2016, 09:51 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 9352
Репутация: 3924 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Можно сделать сводную с фильтром "Прошлая неделя" и такой примерно код

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim d_ As Range, c_ As Range
    Application.ScreenUpdating = 0
    r1_ = Range("B" & Rows.Count).End(xlUp).Row
    c1_ = 9 'столбец с датами обновления
    Set d_ = Intersect(Target, Range("B2").Resize(r1_ - 1, c1_ - 2))
    If d_ Is Nothing Then Exit Sub
    For Each c_ In d_
        ri_ = c_.Row
        If CDate(Cells(ri_, c1_)) <> Date Then
            Cells(ri_, c1_) = Date
        End If
    Next c_
    Me.PivotTables("СводнаяТаблица1").PivotCache.Refresh
    Application.ScreenUpdating = 1
End Sub
[/vba]
К сообщению приложен файл: 4123296_1.xlsm(26Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеМожно сделать сводную с фильтром "Прошлая неделя" и такой примерно код

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim d_ As Range, c_ As Range
    Application.ScreenUpdating = 0
    r1_ = Range("B" & Rows.Count).End(xlUp).Row
    c1_ = 9 'столбец с датами обновления
    Set d_ = Intersect(Target, Range("B2").Resize(r1_ - 1, c1_ - 2))
    If d_ Is Nothing Then Exit Sub
    For Each c_ In d_
        ri_ = c_.Row
        If CDate(Cells(ri_, c1_)) <> Date Then
            Cells(ri_, c1_) = Date
        End If
    Next c_
    Me.PivotTables("СводнаяТаблица1").PivotCache.Refresh
    Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 07.11.2016 в 09:51
skawn Дата: Понедельник, 07.11.2016, 10:15 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ексель мой ругается на файл
вот это пишет и выводит цифры разбросанные по табличке.
 
Ответить
СообщениеЕксель мой ругается на файл
вот это пишет и выводит цифры разбросанные по табличке.

Автор - skawn
Дата добавления - 07.11.2016 в 10:15
_Boroda_ Дата: Понедельник, 07.11.2016, 10:28 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 9352
Репутация: 3924 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Давайте еще раз попробуем
К сообщению приложен файл: 4123296_2.xlsm(25Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДавайте еще раз попробуем

Автор - _Boroda_
Дата добавления - 07.11.2016 в 10:28
skawn Дата: Понедельник, 07.11.2016, 10:36 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
тоже самое, вот что вижу, не знаю в чем проблема :(


Сообщение отредактировал skawn - Понедельник, 07.11.2016, 10:36
 
Ответить
Сообщениетоже самое, вот что вижу, не знаю в чем проблема :(

Автор - skawn
Дата добавления - 07.11.2016 в 10:36
_Boroda_ Дата: Понедельник, 07.11.2016, 10:41 | Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 9352
Репутация: 3924 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
О как!
Ладно. А так?Возможно, придется переустановить фильтр в сводной
К сообщению приложен файл: 4123296_2.xls(52Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеО как!
Ладно. А так?Возможно, придется переустановить фильтр в сводной

Автор - _Boroda_
Дата добавления - 07.11.2016 в 10:41
skawn Дата: Понедельник, 07.11.2016, 10:51 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Пишет "невозможно прочитать файл", потом предлагает восстановить данные, все восстановил, но сводная вообще не подгрузилась видимо. Но теперь я хоть вижу мою табличку слева и сводную справа, но тут дело не только в суммах по договорам, начальство интересует вообще любые изменения, чем занимались мы на неделе, поэтому если изменился статус это тоже нужно как-то видеть, если комментарий изменился тоже видимо надо.
Было бы шикарно если будет "было" и "стало", например, был статус "на расчете", 08.11.2016 изменили на "на согласовании".
Ну или мой первый вариант, просто при любом изменении в строке ставить текущую дату в ячейку в этой же строке, потом фильтром будем прошедшую неделю выбирать.
 
Ответить
СообщениеПишет "невозможно прочитать файл", потом предлагает восстановить данные, все восстановил, но сводная вообще не подгрузилась видимо. Но теперь я хоть вижу мою табличку слева и сводную справа, но тут дело не только в суммах по договорам, начальство интересует вообще любые изменения, чем занимались мы на неделе, поэтому если изменился статус это тоже нужно как-то видеть, если комментарий изменился тоже видимо надо.
Было бы шикарно если будет "было" и "стало", например, был статус "на расчете", 08.11.2016 изменили на "на согласовании".
Ну или мой первый вариант, просто при любом изменении в строке ставить текущую дату в ячейку в этой же строке, потом фильтром будем прошедшую неделю выбирать.

Автор - skawn
Дата добавления - 07.11.2016 в 10:51
_Boroda_ Дата: Понедельник, 07.11.2016, 10:59 | Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 9352
Репутация: 3924 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Для простановки дат используйте макрос в модуле листа. Его я Вам уже дал, только сотрите там строчку про сводную таблицу.
[vba]
Код
Me.PivotTables("СводнаяТаблица1").PivotCache.Refresh
[/vba]
Держите файл без сводной. Если опять ругаться будет, то просто топните правой мышой на ярлычок листа, выберите "Исходный код" и в появившемся окне вставьте мой код, который я привел выше. Без 3-й снизу строки.
К сообщению приложен файл: 4123296_3.xlsm(20Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДля простановки дат используйте макрос в модуле листа. Его я Вам уже дал, только сотрите там строчку про сводную таблицу.
[vba]
Код
Me.PivotTables("СводнаяТаблица1").PivotCache.Refresh
[/vba]
Держите файл без сводной. Если опять ругаться будет, то просто топните правой мышой на ярлычок листа, выберите "Исходный код" и в появившемся окне вставьте мой код, который я привел выше. Без 3-й снизу строки.

Автор - _Boroda_
Дата добавления - 07.11.2016 в 10:59
skawn Дата: Понедельник, 07.11.2016, 11:10 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Получилось, спасибо, попробуем пользоваться этим.
 
Ответить
СообщениеПолучилось, спасибо, попробуем пользоваться этим.

Автор - skawn
Дата добавления - 07.11.2016 в 11:10
skawn Дата: Понедельник, 07.11.2016, 15:07 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Извиняюсь, еще пара вопросов возникла, как-то можно сделать, чтобы код применялся ко всем листам файла? у нас на каждый месяц новый лист создается с клиентской базой, чтобы не копировать каждый раз.
А второй вопрос, возможно ли как то вести лог изменений? например, на отдельном листе дата - клиент - что добавилось\изменилось, можно просто фразу или цифру, я думаю понятно будет к какому столбцу это относится.
Понимаю конечно, что для этого существуют црм системы, но у нас и времени нет изучать и выбирать и сильно специфичная услуга, ну и платить конечно никто не хочет...
 
Ответить
СообщениеИзвиняюсь, еще пара вопросов возникла, как-то можно сделать, чтобы код применялся ко всем листам файла? у нас на каждый месяц новый лист создается с клиентской базой, чтобы не копировать каждый раз.
А второй вопрос, возможно ли как то вести лог изменений? например, на отдельном листе дата - клиент - что добавилось\изменилось, можно просто фразу или цифру, я думаю понятно будет к какому столбцу это относится.
Понимаю конечно, что для этого существуют црм системы, но у нас и времени нет изучать и выбирать и сильно специфичная услуга, ну и платить конечно никто не хочет...

Автор - skawn
Дата добавления - 07.11.2016 в 15:07
Pelena Дата: Понедельник, 07.11.2016, 15:33 | Сообщение № 11
Группа: Модераторы
Ранг: Экселист
Сообщений: 9850
Репутация: 2254 ±
Замечаний: 0% ±

Excel 2010 & Mac Excel 2011
Ну, первый вопрос из вновь возникших ещё можно отнести с натяжкой к данной теме, а вот для второго (лог изменений) создайте новую. А перед этим поищите по форуму, обсуждалось не раз


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеНу, первый вопрос из вновь возникших ещё можно отнести с натяжкой к данной теме, а вот для второго (лог изменений) создайте новую. А перед этим поищите по форуму, обсуждалось не раз

Автор - Pelena
Дата добавления - 07.11.2016 в 15:33
_Boroda_ Дата: Понедельник, 07.11.2016, 17:21 | Сообщение № 12
Группа: Модераторы
Ранг: Экселист
Сообщений: 9352
Репутация: 3924 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
можно сделать, чтобы код применялся ко всем листам файла?

1. Если Вы размножаете листы копированием листа "Ноябрь", то код в модуле листа у Вас тоже копируется вместе с листом.
2. Можно не писать код в модуле каждого листа, а один раз написать в модуле книги. Но, на мой взгляд, первый способ лучше
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim d_ As Range, c_ As Range
    Application.ScreenUpdating = 0
    With Sh
        r1_ = .Range("B" & Rows.Count).End(xlUp).Row
        c1_ = 9 'ñòîëáåö ñ äàòàìè îáíîâëåíèÿ
        Set d_ = Intersect(Target, .Range("B2").Resize(r1_ - 1, c1_ - 2))
        If d_ Is Nothing Then Exit Sub
        For Each c_ In d_
            ri_ = c_.Row
            If CDate(.Cells(ri_, c1_)) <> Date Then
                .Cells(ri_, c1_) = Date
            End If
        Next c_
    End With
    Application.ScreenUpdating = 1
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
можно сделать, чтобы код применялся ко всем листам файла?

1. Если Вы размножаете листы копированием листа "Ноябрь", то код в модуле листа у Вас тоже копируется вместе с листом.
2. Можно не писать код в модуле каждого листа, а один раз написать в модуле книги. Но, на мой взгляд, первый способ лучше
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim d_ As Range, c_ As Range
    Application.ScreenUpdating = 0
    With Sh
        r1_ = .Range("B" & Rows.Count).End(xlUp).Row
        c1_ = 9 'ñòîëáåö ñ äàòàìè îáíîâëåíèÿ
        Set d_ = Intersect(Target, .Range("B2").Resize(r1_ - 1, c1_ - 2))
        If d_ Is Nothing Then Exit Sub
        For Each c_ In d_
            ri_ = c_.Row
            If CDate(.Cells(ri_, c1_)) <> Date Then
                .Cells(ri_, c1_) = Date
            End If
        Next c_
    End With
    Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 07.11.2016 в 17:21
skawn Дата: Вторник, 08.11.2016, 07:03 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, хорошо, поищу.
_Boroda_, спасибо, другие листы на пол года вперед созданы уже, в них то я бы мог и просто накопировать код, а вот если через пол года я уже не буду работать тут, как будут продлевать код не знаю) поэтому было бы круче конечно на всю книгу сразу.
 
Ответить
СообщениеPelena, хорошо, поищу.
_Boroda_, спасибо, другие листы на пол года вперед созданы уже, в них то я бы мог и просто накопировать код, а вот если через пол года я уже не буду работать тут, как будут продлевать код не знаю) поэтому было бы круче конечно на всю книгу сразу.

Автор - skawn
Дата добавления - 08.11.2016 в 07:03
Мир MS Excel » Вопросы и решения » Вопросы по Excel » обновление даты при новых данных в строке. (Формулы/Formulas)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!