На чтение 4 мин Просмотров 3.8к. Опубликовано 16.03.2022
Функция «Исправления» — одна из самых лучших функций в Excel. Она позволяет вам не запутаться при работе с большими объемами данных и файлами, которые редактируют сразу несколько человек.
С помощью этой функции, вы можете отдельно отслеживать каждое изменение или сразу все. В общем, настроек в ней много.
Итак, начнем!
Содержание
- Как начать следить за изменениями в Excel
- Как работает эта опция в Excel
- Как просмотреть все изменения списком
- Принимаем или отклоняем изменения
- Отключаем опцию
- Различия между комментариями и отслеживанием изменений
Как начать следить за изменениями в Excel
Изначально эта опция не активирована в Excel. Вы можете сделать это самостоятельно.
Пошаговая инструкция:
- Щелкните на «Рецензирование»;
- Щелкните на «Выделить изменения…» в функции «Исправления»;
- В открывшемся окошке поставьте галочку на опции «Отслеживать исправления». Также вы можете задать дополнительные настройки (видно на картинке), но это уже по вашему усмотрению;
- Подтвердите.
Итак, мы включили функцию.
Как работает эта опция в Excel
Итак, теперь при каждом изменении ячейки она будет выделена синей рамкой. Если вы нажмете на неё, вы увидите кто, когда и что конкретно изменил в ячейке. Это очень удобно когда файл редактируют несколько людей. Например, если вы нашли ошибку, то можете увидеть кто её допустил.
На картинке ниже, я поменял значение ячейки B1, она выделилась синим цветом и в ней появился синий треугольник (слева вверху).
Если мы поместим курсор мышки на ячейку, то увидим небольшое окошко с примечанием, в нем будет указана вся информация про изменение.
Важная информация: когда вы включаете эту функцию, ваш файл Excel становится «Общим». Вы не сможете использовать его защиту (с паролем, как мы рассматривали в статьях ранее) и так далее. Имейте это в виду.
Как просмотреть все изменения списком
Это может понадобиться, когда вы работаете с большими объемами данных. Вы можете просмотреть сразу все изменения, которые вносились в файл списком.
Пошаговая инструкция:
- Щелкните на «Рецензирование»;
- Щелкните на «Выделить изменения…» в функции «Исправления»;
- В открывшемся окошке, кроме уже поставленной галочки на «Отслеживать исправления», поставьте галочку на опции «Вносить изменения на отдельный лист»;
- Подтвердите.
В результате, Excel откроет новую страничку и поместит все изменения туда списком.
Принимаем или отклоняем изменения
В случае если у вас активирована наша функция, изменения, которые вносятся в ячейки не являются окончательными. Чтобы они стали окончательными, вы должны принять их в специальном разделе «Принять/отклонить исправления». Это относится и к изменениям, которые вносили другие люди в ваш файл, если такие, разумеется, есть.
Пошаговая инструкция:
- Щелкните на «Принять/отклонить исправления» в функции «Исправления»;
- В открывшемся окне «Просмотр исправлений» можно выбрать:
- Когда были внесены изменения
- Какой пользователь вносил изменения
- И в каком диапазоне вносились изменения
- Когда укажете нужные вам параметры, подтвердите;
- В следующем окне Excel покажет вам все изменения, которые вносились в ячейках, которые удовлетворяют всем указанным параметрам в прошлом шаге.
Вот и все, в этом окошке вы выбираете, принять или отклонить изменения (например, если вы увидели ошибку, вы можете отклонить).
Отключаем опцию
Когда вы закончите работу над файлом, вы можете отключить эту опцию, чтобы она не мешала.
Пошаговая инструкция:
- Щелкните на «Выделить исправления…» в функции «Исправления»;
- И просто снимите галочку, которую мы поставили ранее («Отслеживать исправления»);
- Подтвердите;
- Откроется окошко, указанное на картинке ниже. Просто щелкните «Да».
Различия между комментариями и отслеживанием изменений
Некоторым нравится добавлять комментарии к ячейкам.
В чем разница между комментарием и отслеживанием изменения:
- Функция «Отслеживание изменений» пишет примечание для каждой ячейки только тогда, когда она была изменена. В случае комментария, изменения необязательны. Комментарий можно оставить и без изменения ячейки.
- Преимущество функции, рассмотренной в статье, заключается в том, что она автоматизирована. То есть она автоматически помечает все ячейки, где было изменение.
- Также нельзя вывести все комментарии для файла, в отдельный лист и после, например, распечатать их.
- Минус нашей функции в том, что, например, мы не можем защитить файл Excel, когда используем функцию. А если мы используем комментарии, то можем.
Как вы могли отслеживать ячейки листа, если данные были изменены в Excel? Это может помочь вам как можно быстрее идентифицировать измененные ячейки. В этой статье я расскажу о некоторых интересных методах решения этой задачи в Excel.
Отслеживайте изменения ячеек в Excel с помощью функции отслеживания изменений
Отслеживайте изменения ячеек в Excel с помощью кода VBA
Отслеживайте изменения ячеек в Excel с помощью функции отслеживания изменений
В Excel есть полезный Отслеживать изменения функция, она может помочь вам отметить измененные ячейки, пожалуйста, сделайте следующее:
1. Нажмите Обзор > Отслеживать изменения > Выделить изменения, см. снимок экрана:
2. В Выделить изменения диалоговом окне выполните следующие операции:
(1.) Проверить Отслеживайте изменения во время редактирования. Это также разделяет вашу книгу.
(2.) Под Выделите, какие изменения В разделе укажите нужные вам элементы Когда, Кто и Где.
(3.) Наконец, проверьте Выделите изменения на экране опцию.
3. После завершения настройки нажмите OK кнопка, теперь, когда вы меняете любые значения ячеек в указанных ячейках, вокруг измененных ячеек появляется граница с треугольным значком, см. снимок экрана:
Внимание: С помощью этого метода ваша книга станет общей.
Отслеживайте изменения ячеек в Excel с помощью кода VBA
Следующий код VBA также может помочь вам отслеживать значения ячеек при их изменении, пожалуйста, сделайте следующее:
1. Щелкните правой кнопкой мыши вкладку листа, на которой вы хотите отслеживать изменения ячеек, и выберите Просмотреть код из контекстного меню в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код VBA в модуль:
Код VBA: отслеживание изменений ячеек на листе Excel:
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160728
Dim xrng As Range
Set xrng = Range("A1:E7")
If Not Application.Intersect(xrng, Range(Target.Address)) _
Is Nothing Then
MsgBox "Cell " & Target.Address & " has changed.", vbInformation, "Kutools for Excel"
End If
End Sub
Примечание: В приведенном выше коде A1: E7 — это диапазон данных, который вы хотите отслеживать при изменении ячейки, вы можете изменить его по своему усмотрению.
2. Затем сохраните и закройте это окно кода, и теперь, когда вы измените значение ячейки в указанном диапазоне, появится окно сообщения, напоминающее вам, см. Снимок экрана:
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (7)
Оценок пока нет. Оцените первым!
История изменения ячейки в примечаниях
В некоторых случаях весьма полезным может быть сохранение всей истории изменения какой-либо ячейки в ее же примечании. Выглядеть это может примерно так:
Чтобы реализовать подобное, нам потребуется несложный макрос. Щелкните правой кнопкой мыши по ярлычку листа, где находятся отслеживаемые ячейки, и выберите команду Исходный текст (View Code). В открывшееся окно скопируйте и вставьте следующий код:
Private Sub Worksheet_Change(ByVal Target As Range) Dim NewCellValue$, OldComment$ Dim cell As Range 'если ячейка не в отслеживаемом диапазоне, то выходим If Intersect(Target, Range("B3:B5")) Is Nothing Then Exit Sub 'перебираем все ячейки в измененной области For Each cell In Intersect(Target, Range("B3:B5")) If IsEmpty(cell) Then NewCellValue = "Ячейка очищена" 'фиксируем очистку ячейки Else NewCellValue = cell.Formula 'или ее содержимое End If On Error Resume Next With cell OldComment = .Comment.Text & Chr(10) .Comment.Delete 'удаляем старое примечание (если было) .AddComment 'добавляем новое и вводим в него текст .Comment.Text Text:=OldComment & Application.UserName & " " & _ Format(Now, "MM.DD.YY h:MM:ss") & " : " & NewCellValue .Comment.Shape.TextFrame.AutoSize = True 'делаем автоподбор размера .Comment.Shape.TextFrame.Characters.Font.Size = 8 End With Next cell End Sub
Диапазон отслеживания B3:B5 замените на свой — и пользуйтесь на здоровье.
Ссылки по теме
- Как узнать кто из пользователей входил в вашу книгу Excel в последнее время
- Основные способы установки защиты (ячеек, листов, книги) в Excel
Отслеживание изменений в конкретных ячейках |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Хитрости »
1 Май 2011 273496 просмотров
Ведение журнала сделанных в книге изменений
Проблема очень актуальна для больших организаций, когда одним файлом пользуются несколько человек. И каждый может сделать какие-то свои изменения. И конечно всегда наступает момент когда надо узнать — а кто сделал то или иное изменение? Возможно просто для информации, а бывает и хуже, когда необходимо узнать кто внес конкретное изменение, которое делать было нельзя и по возможности восстановить хоть часть того, что было.
- Отслеживание изменений при помощи встроенных средств — Общий доступ к книге
- Отслеживание изменений и ведение журнала при помощи кода
Отслеживание изменений при помощи встроенных средств — Общий доступ к книге
Есть относительно простой способ отслеживать изменения(если это можно так назвать): дать книге общий доступ
Excel 2007 и выше: вкладка Рецензирование(Review) —Доступ к книге(Share workbook).
В более новых версиях(таких как Excel 2021 и выше, а так же Office 365) на вкладке Рецензирование(Review) нет команды Доступ к книге(Share workbook). Она спрятана, т.к. считается устаревшей и вместо неё Microsoft принуждает использовать общий доступ через OneDrive. Достать устаревшую возможность общего доступа можно через меню:
Файл(File) -Параметры(Options) -либо Панель быстрого доступа(Quick Access Toolbar) либо Настроить ленту(Customize ribbon) -в списке Выбрать команды из(Choose commands from) выбираем Все команды(All commands) и находим там пункт: Общий доступ к книге(старые версии)(Share workbook(Legacy) и Выделить исправления(Highlight changes). Перемещаем их либо на панель быстрого доступа(если она была выбрана изначально), либо на ту же вкладку Рецензирование(Review), если команда выбиралась в Настроить ленту(Customize ribbon).
После этого выбираем команду Общий доступ к книге(старые версии)(Share workbook(Legacy)
В появившемся окне поставить галочку разрешить изменять файл нескольким пользователям одновременно(Allow changes by more then one user at the same time):
Далее можно настроить срок хранения лога изменений, конфликты и пр — вкладка Подробнее(Advanced):
Регистрация изменений(Track changes)
- Хранить журнал в течение(keep change history for): — если необходимо вести журнал изменений(а нам необходимо!) то оставляем этот пункт включенным и устанавливаем количество дней, в течение которых необходимо сохранять историю. По умолчанию это 30 дней. Здесь имеются ввиду последние 30 дней от текущей даты. Т.е. по истечению этих 30 дней более ранние данные истории будут затерты
- Не хранить журнал изменений(don’t keep change history): после выбора этого пункта и подтверждения журнал будет удален(если он был создан) и история вестись не будет
Обновлять изменения
- При сохранении файла(When file is saved) — это самый оптимальный вариант. Данные об изменениях в файле будут обновляться только тогда, когда мы сами сохраним файл.
- Каждые(Automatically every): указывается промежуток времени в минутах, через который книга сама автоматически будет сохраняться и регистрировать изменения. Не очень удобен данный пункт если в файле одновременно работает несколько человек. При этом необходимо будет обязательно выбрать какое действие будет производится по умолчанию:
- сохранить мои изменения и просмотреть чужие(save my changes and see others’ changes)
- только просмотреть чужие изменения(just see other users’ changes)
Пункты говорят сами за себя, можно отметить лишь один нюанс: принимать решение о сохранении тех или иных изменениях будет тот пользователь, который первым открыл файл.
Для противоречивых изменений(Conflicting changes between users)
-
данный пункт управляет разрешением конфликтов, если при одновременном пользовании файлом несколькими пользователями два и более пользователя сделали изменения в одной и той же ячейке листа.
- запрашивать чьи изменения имеют преимущество(ask me which changes win) — самый оптимальный вариант. Первый, открывший файл пользователь определяет какие изменения надо принять, а какие отклонить
- ранее сохраненные имеют преимущество(the changes being saving win) — не очень правильный вариант, но все зависит от ситуации. По логике при данном пункте при возникновении конфликта автоматически будут приняты лишь те изменения, которые были сделаны ранее. Может сыграть нехорошую шутку, поэтому надо быть острожным с этим пунктом
Включить в личное представление(Include in personal view)
-
Данный пункт управляет настройками печати и фильтра общей книги для нескольких пользователей.
- параметры печати(Print settings) — Обычно, в одном файле когда мы настраиваем параметры печати, они сохраняются внутри файла и при следующем открытии их не надо уже заново настраивать. Здесь тоже самое, но хранится для каждого пользователя отдельно. Т.е. даже если в этом файле один пользователь настроил одни параметры печати, а другой – иные, то для каждого пользователя эти параметры сохраняться. В обычной книге применились бы те параметры, которые были назначены перед последним сохранением книги.
- фильтры(Filter settings) — если один пользователь отфильтровал данные по «Юго-Восточный округ», а другой тот же столбец по «Северный округ», то при установленном данном пункте у каждого пользователя файл откроется с отфильтрованными строками именно по установленным ими параметрам — для каждого свой
Но оба эти пункта имеют большой недостаток: в зависимости от количества пользователей и их действий они могут сильно «раздувать» файл и приводить к значительным его «тормозам». Поэтому без необходимости лучше их не использовать
Теперь самое главное: как увидеть все сделанные изменения
После того, как пользователи поработали с файлом и стало необходимо увидеть сделанные изменения необходимо перейти на вкладке Рецензирование(Review) —Исправления(Track changes) —Выделить исправления(Highlight changes)
Здесь можно выбрать какие изменения показывать
- по времени(When) — если хотите увидеть только какие-то конкретные изменения, то надо установить галочку на этом пункте и выбрать нужное. Доступно выбрать: Со времени последнего сохранения, Все, Еще не просмотрено, С даты. Пункты достаточно красноречивы и понятны, расписывать каждый не вижу смысла. Если хотите просмотреть все изменения — галочку с этого пункта надо снять
- пользователем(Who) можно показать изменения, сделанные конкретным пользователем, всеми пользователями, или всеми пользователями, кроме того, кто запросил отчет об изменениях(т.е. кроме себя любимого)
- в диапазоне(Where) можно указать конкретный диапазон на листе и отчет об изменения будет выведен только для ячеек этого диапазона.
Выделять исправления на экране(Highlight changes on screen): если установить эту галочку, то изменения будут созданы в виде примечаний к ячейкам, изменения в которых были сделаны. В левом верхнем углу ячейки в этом случае появится черный треугольник, а при наведении на эту ячейку появится примечание с информацией о том кто изменил, когда и на что:
Вносить изменения на отдельный лист(List changes on a new sheet): в этом случае будет создан новый лист с именем «Журнал», в котором будут перечислены ячейки, в которые были внесены изменения с указанием даты и времени изменения, пользователя сделавшего изменение, старое и новое значение измененной ячейки:
Примечание: После того, как книге дан общий доступ книгу одновременно могут менять несколько пользователей. Однако я не рекомендую делать это без крайней необходимости, т.к. одновременный доступ к файлам Excel реализован очень плохо и работает это нестабильно. В какой-то момент файл может просто отказаться работать и все данные будут утеряны. Так же неизбежно будут возникать спорные ситуации, когда изменения внесли два человека одновременно и не сохранилось в результате ни одно из внесенных.
Но самый главный недостаток: книги в общем доступе имеют ряд ограничений, среди которых такие как:
- невозможно удалять листы
- невозможно создавать диаграммы, можно лишь просматривать созданные ранее
- невозможно создавать сводные таблицы, можно лишь просматривать созданные ранее
- невозможно создавать или изменять группировку данных, можно использовать ранее созданную
- невозможно изменять параметры защиты листов и книги
- невозможно использовать расширенный фильтр
- невозможно использовать Текст по столбцам
- невозможно создавать новые проверки данных, а так же изменять существующие. Допускается лишь обвести или удалить обводку с неверных данных
- невозможно добавлять или изменять ранее созданные формулы массива
- и т.д.
Плюс невозможно не только использовать умные таблицы, но и сделать книгу общей, если в ней есть хоть одна умная таблица. Если будет попытка сделать общий доступ к книге с умной таблицей Excel покажет предупреждение, что этого делать нельзя и проинструктирует как преобразовать такую таблицу в диапазон для возможности использовать общий доступ.
Так же хочу отметить, что есть распространенное заблуждение о невозможности использования макросов в книгах с общим доступом. Это не так, коды Visual Basic for Applications разрешается применять и в большинстве случаев они будут работать корректно и как задумывались, если они только не пытаются произвести действия, перечисленные как запрещенные для книг с общим доступом. Плюс невозможно просматривать и изменять коды в книгах с общим доступом.
Изменения можно отслеживать и при помощи кода. При этом такой метод дает не менее полное представление об изменениях в ячейках и при этом давать общий доступ книге нет необходимости, а следовательно и все ограничения, применимые для книг в общем доступе тоже остаются за бортом, что делает такой подход порой предпочтительнее. Единственное, при таком режиме файл нельзя будет редактировать одновременно нескольким пользователям. Но в большинстве случаев этого и не надо.
Я могу предложить небольшой код, который будет отслеживать следующие параметры:
- Имя пользователя(учетная запись пользователя на компьютере), сделавшего изменения
- адрес ячейки, в которую были внесены изменения
- дата и время внесения изменений
- имя листа, в котором были сделаны изменения
- значение ячейки до изменения(старое значение)
- значение ячейки после изменения(новое значение).
Итак, Вы решили реализовать данный процесс. Изначально необходимо разрешить макросы, без этого данный способ ведения журнала не сработает. Далее необходимо добавить в книгу новый лист с именем LOG и вставить приведенный код в модуль книги, изменения в которойнеобходимо отслеживать:
Option Explicit Public sValue As String Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "LOG" Then Exit Sub Dim sLastValue As String Dim lLastRow As Long With Sheets("LOG") lLastRow = .Cells.SpecialCells(xlLastCell).Row + 1 If lLastRow = Rows.Count Then Exit Sub Application.ScreenUpdating = False: Application.EnableEvents = False .Cells(lLastRow, 1) = CreateObject("wscript.network").UserName .Cells(lLastRow, 2) = Target.Address(0, 0) .Cells(lLastRow, 3) = Format(Now, "dd.mm.yyyy HH:MM:SS") .Cells(lLastRow, 4) = Sh.Name .Cells(lLastRow, 5).NumberFormat = "@" .Cells(lLastRow, 5) = sValue If Target.Count > 1 Then Dim rCell As Range, rRng As Range On Error Resume Next Set rRng = Intersect(Target, Sh.UsedRange): On Error GoTo 0 If Not rRng Is Nothing Then For Each rCell In rRng If Not IsError(Target) Then sLastValue = sLastValue & "," & rCell Else sLastValue = sLastValue & "," & "Err" Next rCell sLastValue = Mid(sLastValue, 2) Else sLastValue = "" End If Else If Not IsError(Target) Then sLastValue = Target.Value Else sLastValue = "Err" End If .Cells(lLastRow, 6).NumberFormat = "@" .Cells(lLastRow, 6) = sLastValue End With Application.ScreenUpdating = True: Application.EnableEvents = True End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "LOG" Then Exit Sub If Target.Count > 1 Then Dim rCell As Range, rRng As Range On Error Resume Next Set rRng = Intersect(Target, Sh.UsedRange): On Error GoTo 0 If rRng Is Nothing Then Exit Sub For Each rCell In rRng If Not IsError(rCell) Then sValue = sValue & "," & rCell Else sValue = sValue & "," & "Err" Next rCell sValue = Mid(sValue, 2) Else If Not IsError(Target) Then sValue = Target.Value Else sValue = "Err" End If End Sub
Что такое модуль книги и как туда вставить код подробно описано в этой статье. Если кратко: открываем редактор VBA(Alt+F11) -находим в списке объектов ЭтаКнига(ThisWorkbook) -двойной щелчок по ней и в окно редактора справа вставляется этот код.
Лист «LOG» рекомендую сделать скрытым, иначе смысла в отслеживании действий мало, т.к. любой сможет перейти на этот лист и стереть историю своих изменений. Надежно скрыть лист поможет эта статья: Как сделать лист очень скрытым.
Для того, чтобы хранить историю изменений в отдельном текстовом файле или отдельной книге Excel можно применить такой код:
Option Explicit Public sValue As String Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "LOG" Then Exit Sub Dim sLastValue As String Dim lLastRow As Long, wbLOG As Workbook Dim sPath as String Const sLOGName As String = "LOG.txt" '"LOG.xls" sPath = Application.DefaultFilePath Application.ScreenUpdating = False '============== только для записи в текстовый файл ====================== If Dir(sPath & sLOGName, vbDirectory) = "" Then Open sPath & sLOGName For Output As #1: Close #1 End If '============== только для записи в отдельный файл Excel ====================== ' If Dir(sPath & sLOGName, vbDirectory) = "" Then ' Set wbLOG = Workbooks.Add ' wbLOG.SaveAs sPath & sLOGName, xlNormal ' End If Set wbLOG = Workbooks.Open(sPath & sLOGName) '============================================================================ With wbLOG.Sheets(1) lLastRow = .Cells.SpecialCells(xlLastCell).Row + 1 If lLastRow = .Rows.Count Then Exit Sub Application.ScreenUpdating = False: Application.EnableEvents = False .Cells(lLastRow, 1) = CreateObject("wscript.network").UserName .Cells(lLastRow, 2) = Target.Address(0, 0) .Cells(lLastRow, 3) = Format(Now, "dd.mm.yyyy HH:MM:SS") .Cells(lLastRow, 4) = Sh.Name .Cells(lLastRow, 5).NumberFormat = "@" .Cells(lLastRow, 5) = sValue If Target.Count > 1 Then Dim rCell As Range, rRng As Range On Error Resume Next Set rRng = Intersect(Target, Sh.UsedRange): On Error GoTo 0 If Not rRng Is Nothing Then For Each rCell In rRng If Not IsError(Target) Then sLastValue = sLastValue & "," & rCell Else sLastValue = sLastValue & "," & "Err" Next rCell sLastValue = Mid(sLastValue, 2) Else sLastValue = "" End If Else If Not IsError(Target) Then sLastValue = Target.Value Else sLastValue = "Err" End If .Cells(lLastRow, 6).NumberFormat = "@" .Cells(lLastRow, 6) = sLastValue End With wbLOG.Close 1 Application.ScreenUpdating = True: Application.EnableEvents = True End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "LOG" Then Exit Sub If Target.Count > 1 Then Dim rCell As Range, rRng As Range On Error Resume Next Set rRng = Intersect(Target, Sh.UsedRange): On Error GoTo 0 If rRng Is Nothing Then Exit Sub For Each rCell In rRng If Not IsError(rCell) Then sValue = sValue & "," & rCell Else sValue = sValue & "," & "Err" Next rCell sValue = Mid(sValue, 2) Else If Not IsError(Target) Then sValue = Target.Value Else sValue = "Err" End If End Sub
Файл хранится в папке «Мои документы» пользователя. Имя файла — LOG.txt задается посредством константыConst sLOGName As String = «LOG.txt»
Чтобы вести изменения в отдельной книге Excel надо будет всего лишь закомментировать строки под «только для записи в текстовый файл» и раскомментировать строки под «только для записи в отдельный файл Excel» и поменять значение для константыConst sLOGName As String = «LOG.xls»
Не следует оставлять оба этих блока — они противоречат друг другу и если оставить оба, то будет создан текстовый файл, но изменения все равно будут заноситься в отдельную книгу Excel.
Если хотите, чтобы файл с историей изменений хранился в папке, отличной от Мои документы, то необходимо
Application.DefaultFilePath заменить на нужный путь, к примеру такой:sPath = «C:UsersThe_PristРабочий стол»
При изменении данного параметра необходимо учитывать, что не у всех пользователей может быть доступ к конкретной папке.
Все чаще стали появляться вопросы типа «А как отследить изменения только в конкретном диапазоне?». На самом деле не очень сложно. Надо добавить пару строк, которые будут определять в каких ячейках были изменения и какие отслеживать. Только добавить строки надо будет в обеих процедурах: Workbook_SheetChange и Workbook_SheetSelectionChange.
Например, код ниже будет отслеживать только те ячейки, для которых значение изменили только в диапазоне B:F:
Option Explicit Public sValue As String Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "LOG" Then Exit Sub Dim rCells As Range 'если изменения произошли не в диапазоне "B:F" - ничего не делаем On Error Resume Next Set rCells = Intersect(Target, Range("B:F")) If rCells Is Nothing Then Exit Sub On Error GoTo 0 Dim sLastValue As String Dim lLastRow As Long, wbLOG As Workbook Dim sPath as String Const sLOGName As String = "LOG.txt" '"LOG.xls" sPath = Application.DefaultFilePath Application.ScreenUpdating = False '============== только для записи в текстовый файл ====================== If Dir(sPath & sLOGName, vbDirectory) = "" Then Open sPath & sLOGName For Output As #1: Close #1 End If '============== только для записи в отдельный файл Excel ====================== ' If Dir(sPath & sLOGName, vbDirectory) = "" Then ' Set wbLOG = Workbooks.Add ' wbLOG.SaveAs sPath & sLOGName, xlNormal ' End If Set wbLOG = Workbooks.Open(sPath & sLOGName) '============================================================================ With wbLOG.Sheets(1) lLastRow = .Cells.SpecialCells(xlLastCell).Row + 1 If lLastRow = .Rows.Count Then Exit Sub Application.ScreenUpdating = False: Application.EnableEvents = False .Cells(lLastRow, 1) = CreateObject("wscript.network").UserName .Cells(lLastRow, 2) = Target.Address(0, 0) .Cells(lLastRow, 3) = Format(Now, "dd.mm.yyyy HH:MM:SS") .Cells(lLastRow, 4) = Sh.Name .Cells(lLastRow, 5).NumberFormat = "@" .Cells(lLastRow, 5) = sValue If rCells.Count > 1 Then Dim rCell As Range, rRng As Range On Error Resume Next Set rRng = Intersect(rCells, Sh.UsedRange): On Error GoTo 0 If Not rRng Is Nothing Then For Each rCell In rRng If Not IsError(Target) Then sLastValue = sLastValue & "," & rCell Else sLastValue = sLastValue & "," & "Err" Next rCell sLastValue = Mid(sLastValue, 2) Else sLastValue = "" End If Else If Not IsError(Target) Then sLastValue = Target.Value Else sLastValue = "Err" End If .Cells(lLastRow, 6).NumberFormat = "@" .Cells(lLastRow, 6) = sLastValue End With wbLOG.Close 1 Application.ScreenUpdating = True: Application.EnableEvents = True End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "LOG" Then Exit Sub Dim rCells As Range 'если изменения произошли не в диапазоне "B:F" - ничего не делаем On Error Resume Next Set rCells = Intersect(Target, Range("B:F")) If rCells Is Nothing Then Exit Sub On Error GoTo 0 If rCells.Count > 1 Then Dim rCell As Range, rRng As Range On Error Resume Next Set rRng = Intersect(rCells, Sh.UsedRange): On Error GoTo 0 If rRng Is Nothing Then Exit Sub For Each rCell In rRng If Not IsError(rCell) Then sValue = sValue & "," & rCell Else sValue = sValue & "," & "Err" Next rCell sValue = Mid(sValue, 2) Else If Not IsError(Target) Then sValue = Target.Value Else sValue = "Err" End If End Sub
Скачать пример
Tips_Macro_LOG.xls (50,0 KiB, 8 022 скачиваний)
Так же см.:
Выделение сделанных изменений
Запись изменений на листе в примечания
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
|
1 |
|
Есть ли событие, которое отслеживает, было ли в ячейке изменение данных12.12.2012, 01:18. Показов 14203. Ответов 20
Здравствуйте. Будьте добры подскажите, есть ли событие, которое отслеживает, если в ячейке произошло изменение данных.
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
12.12.2012, 06:31 |
2 |
Change — срабатывает, когда пользователь вносит изменения на лист вручную и когда макрос вносит изменения на лист;
1 |
118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
|
12.12.2012, 09:14 [ТС] |
3 |
пасибб, буду думать.
0 |
Staniiislav 30 / 30 / 0 Регистрация: 07.07.2010 Сообщений: 50 |
||||
12.12.2012, 10:13 |
4 |
|||
1 |
118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
|
12.12.2012, 12:25 [ТС] |
5 |
это именно то, что я искал Станислав. какая функция или процедура возвращает активную строку и столбец ? я ищу ищу никак не могу найти и понять…
0 |
Staniiislav 30 / 30 / 0 Регистрация: 07.07.2010 Сообщений: 50 |
||||
12.12.2012, 13:14 |
6 |
|||
1 |
Second 118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
||||||||
12.12.2012, 17:05 [ТС] |
7 |
|||||||
имею следующий код:
работает прекрасно, заполняя первое поле в записи значением после нажатия кнопки в текущей записи почему тоже самое не работает в обработчике события:
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,928 |
|
12.12.2012, 17:38 |
8 |
почему не работает — работает. впишите в любую ячейку что нибудь и нажмите ввод. Добавлено через 7 минут
0 |
118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
|
12.12.2012, 17:45 [ТС] |
9 |
почему не работает — работает. впишите в любую ячейку что нибудь и нажмите ввод. блин, у меня не работает второй обработчик +_+
для книги Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) я думаю это событие не изменения данных, а смены листа. Не знаю, как применить Ваш вариант =/
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
12.12.2012, 19:09 |
10 |
Second, процедуры событий нужно помещать в модули листов. Примечание: есть ещё стандартный модуль, модуль класса, модуль формы, модуль книги.
0 |
118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
|
12.12.2012, 19:40 [ТС] |
11 |
Second, процедуры событий нужно помещать в модули листов. Примечание: есть ещё стандартный модуль, модуль класса, модуль формы, модуль книги. ясно, зафтра уже буду решать поблему )
0 |
30 / 30 / 0 Регистрация: 07.07.2010 Сообщений: 50 |
|
13.12.2012, 10:32 |
12 |
ясно, зафтра уже буду решать поблему ) Вы бы выложили пример с тем что хотите отслеживать, изменять или еще чего-то, и Вам бы уже готовый пример помогли сделать!
0 |
118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
|
13.12.2012, 10:51 [ТС] |
13 |
ситуация фантастическая, на моем рабочем месте обработчик категорически не работает, проверял у коллег — все прекрасно… моветон однако =/ есть какие-либо идеи почему такое может происходить ? Добавлено через 2 минуты
Вы бы выложили пример с тем что хотите отслеживать, изменять или еще чего-то, и Вам бы уже готовый пример помогли сделать! я хочу, чтобы в назначенном поле ( для пользователя RO) автоматом проставлялась дата последнего обращения к записи.
0 |
Скрипт 5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
||||
13.12.2012, 13:15 |
14 |
|||
Second, такое событие у вас работает?
0 |
118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
|
14.12.2012, 09:10 [ТС] |
15 |
обязательно опробую и дам ответ, завал пока ))) Добавлено через 14 часов 2 минуты
0 |
Скрипт 5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
||||
14.12.2012, 09:30 |
16 |
|||
Second, сделайте новую книгу, поместите туда вот этот код:
убедитесь, что у вас этот код не работает, и выложите книгу на форуме. Ещё укажите, какая у вас версия Excel: 2003, 2007 или другая.
0 |
Second 118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
||||
14.12.2012, 10:41 [ТС] |
17 |
|||
так, большое спасибо макрос Ваш заработал на «проблемном» рабочем месте. Подозреваю где-то я в настройках мог накосячить. Добавлено через 25 минут
мне необходимо, чтобы в первое поле записи, в которой произошла редакция ячейки, вносилась текущая дата.
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
14.12.2012, 10:44 |
18 |
Second, вместо ActiveCell и нужно использовать Target.
1 |
118 / 80 / 1 Регистрация: 10.08.2011 Сообщений: 664 |
|
14.12.2012, 11:01 [ТС] |
19 |
секунду опробую. Все корректно работает Добавлено через 9 минут
0 |
Скрипт 5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
||||||||
14.12.2012, 11:16 |
20 |
|||||||
Second, дату и время автоматически можно вносить двумя способами:
Пользователя можно так указать:
1 |
На чтение 2 мин. Просмотров 122 Опубликовано 22.05.2021
Как можно отслеживать ячейки листа, если данные изменены в Excel? Это может помочь вам как можно быстрее идентифицировать измененные ячейки. В этой статье я расскажу о некоторых интересных методах решения этой задачи в Excel.
Отслеживайте изменения ячеек в Excel с помощью функции отслеживания изменений
Отслеживайте изменения ячеек в Excel с помощью кода VBA
Отслеживайте изменения ячеек в Excel с помощью функции отслеживания изменений
Потрясающе ! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Сэкономьте 50% своего времени и уменьшите тысячи щелчков мышью каждый день!
В Excel есть полезная функция Отслеживать изменения , которая может помочь вам отметить измененные ячейки , сделайте следующее:
1 . Нажмите Обзор > Отследить изменения > Выделить изменения , см. Снимок экрана:
2 . В диалоговом окне Выделить изменения выполните следующие операции:
(1.) Установите флажок Отслеживать изменения во время редактирования. Это также дает доступ к вашей книге .
(2.) В разделе Выделить, какие изменения укажите элементы Когда, Кто и Где, как вы необходимо.
(3.) Наконец, отметьте опцию Выделить изменения на экране .
. После завершения настроек нажмите кнопку OK , теперь, когда вы изменяете любые значения ячеек в указанных ячейках, вокруг измененных ячеек появляется граница с треугольным значком, см. Снимок экрана:
Примечание . При использовании этого метода ваша рабочая книга станет общей.
Ячейка монитора изменения в Excel с кодом VBA
Следующий код VBA также может помочь вам отслеживать значения ячеек при их изменении, пожалуйста, сделайте следующее:
1 . Щелкните правой кнопкой мыши вкладку листа, на которой вы хотите отслеживать изменения ячеек, и выберите Просмотреть код из контекстного меню в открывшемся окне Microsoft Visual Basic для приложений , скопируйте и вставьте следующий код VBA в модуль:
Код VBA: отслеживайте изменения ячеек на листе Excel:
Примечание. В приведенном выше коде – это диапазон данных, который вы хотите отслеживать при изменении ячейки, вы можете изменить его по своему усмотрению.
2 . Затем сохраните и закройте это окно кода, и теперь, когда вы измените значение ячейки в указанном диапазоне, появится окно сообщения, напоминающее вам, см. Снимок экрана:
You can use Excel’s Track Changes option to keep track of changes to a worksheet that needs to be updated or reviewed by others. Here’s how!
Tracking changes on your Excel spreadsheets makes it easier for other people to update or review your file. It also comes in handy when you want to keep track of all the changes made to it. The track changes command is easy to find in the Review tab of Microsoft Excel’s older versions. However, you and your team may find it difficult to set them up on newer versions.
So how do you make the track changes feature available on newer Microsoft Excel versions? Here’s a guide to help you out.
Enabling the Track Changes Feature in Microsoft Excel
The track changes feature is disabled by default in Microsoft Excel. This means that the first step to tracking your changes will be to enable the feature. Here’s how you do it.
- Go to the Review tab > Track Changes > Highlight Changes > Track Changes While Editing.
- Under the Track Changes dropdown menu, select Highlight Changes.
- When the Highlight Changes dialogue box opens, select Track changes while editing.
Tracking changes while editing helps you to easily specify the situations under which your workbook can be shared. That is why you will see the “Who” and “When” options. For the sake of this guide, we will use the default settings, so:
- Select the When checkbox, set it to All, and then go to the Who checkbox and set it to Everyone.
- Afterward, select the Highlight changes on the Screen check box.
- Then finally click OK.
There you have it. Track Changes in Microsoft Excel is now enabled. This means any changes you make to your workbook will be highlighted. It is also good to note that you can only track changes on a saved file.
Making Track Changes in Microsoft Excel
Now that we have enabled tracking changes, you can begin making your changes on any Microsoft Excel cell or group of cells. For instance, in the mock project below, we have made changes in cell C4 from “Software Development” to “IT”.
So, when the cursor hovers over the changed cell, a message pops up. This message indicates what change was made, who made it, and when it was made.
A track-enabled workbook will always show blue borders and a small blue triangle on the top left side of an edited cell. If you have multiple reviewers, Microsoft Excel assigns each one of them with a different tracking color.
This being the case, tracked workbooks cannot be protected because multiple people have been granted access. There are other options that you may not access once the Track Changes feature is on. Remember that you have to post the workbook in a shared location for you to get edits from others.
Getting a List of Tracked Changes on a Separate Worksheet
You can also view the Tracked Changes history on a separate worksheet. This list consists of all the changes made to your worksheet. This includes the previous cell content (an old value), the current cell content, and the new value.
Here’s how to get a list of your tracked changes.
- On the Review tab > Track Changes > Highlight Changes.
- This will open the Highlight Changes dialog box. Check the box next to labeled List changes on a new sheet, and click OK.
View and Accept Changes
Enabling the tracking feature is one of the steps to tracking your file. Besides enabling this feature, you must also review the changes you have made. Reviewing changes makes it easier for you to sift through the ton of alterations made by others working on the same workbook.
The easier it is to determine the changes made, the more likely you will be to identify which of the changes are worth keeping and which ones you can do away with. To accept changes in Microsoft Excel, here’s what you have to do.
- Go to the Review Tab > Track Changes > Accept or Reject Changes.
- Click on Track Changes in the Changes group and select Accept/Reject Changes.
Once on the Select Changes to be Accepted or Rejected dialog box, you must specify the When, Who, and Where options. Here’s how to go about it:
- For the When option, you can choose all changes that have not been reviewed or specify a date.
- In the Who checkbox, you can select a specific individual and review the changes they have made.
- On the Where checkbox, you can accept or reject changes to the entire workbook. Alternatively, select the cells whose changes you would like to review and click OK.
- Clicking OK will open the Accept or Reject Changes dialog box.
- In the Accept or Reject Changes dialog box, you can click Accept changes one by one or Accept all to accept all changes at once.
If you reject a change, it will revert to the original value. It is also important to know that you cannot undo a change when you accept it.
Disabling Track Changes in Microsoft Excel
Once you finish your work, you can disable the Track Changes feature in Microsoft Excel. That will remove any existing blue box in the cells and will stop tracking any further changes.
Here are the steps to disable Track Changes in Microsoft Excel:
- Go to the Review Tab > Track Changes > Highlight Changes.
- In the Changes group option, click on Track Changes and select Highlight Changes.
- In the Highlight Changes dialog box, uncheck the option—Track Changes while Editing. This also shares your workbook.
- Click OK.
- Once you click OK, you will see a prompt, as shown below. Click on Yes.
Can the Track Changes Feature Work on Microsoft Excel Sheets With Tables?
As it stands, you can’t use track changes on spreadsheets that contain tables. To track changes on such spreadsheets, you will have to convert them to ranges by selecting the table, clicking the Design Tab, and then clicking on Convert to Range.
For more complex projects, you can review these Microsoft Excel spreadsheet templates to ease your tracking process. If, after all this, you are still struggling to track changes, then maybe you are using Excel to run a project it isn’t well suited to. So here’s a list of some things you should avoid doing in Excel.
Why Do You Need to Enable Your Track Changes?
While you can comfortably work on your file without enabling this feature, it makes your work far more seamless, especially when working in a team.
Tracking changes enables you to insert a note whenever there are any changes in the cells. It automatically records all the changes taking place on your worksheet and stores them up for you to refer to later. That said, enjoy this hustle-free strategy for tracking changes on your Microsoft Excel sheets.