Дата изменения ячейки в excel формула excel

Получить и вставить время создания и время последнего изменения в ячейки

В этой статье будут рассказываться о способах получения времени создания и времени последнего изменения текущей информации книги, а также вставки времени создания и времени последнего изменения текущей информации книги в ячейки Excel.

Получите время создания и время последнего изменения в Excel с помощью команды Info

Получите время создания и время последнего изменения в Excel с помощью функции дополнительных свойств

Вставьте созданное время и время последнего изменения в ячейки Excel с кодом VBA

Вставьте время создания и время последнего изменения в ячейки/верхний/нижний колонтитул с помощью Kutools for Excel хорошая идея3


стрелка синий правый пузырь Получите время создания и время последнего изменения в Excel с помощью команды Info

Мы можем узнать точное время создания и время последнего изменения текущей книги в представлении за кулисами Microsoft Excel 2010/2013.

Нажмите Файл > Инфо, а в правой части представления за кулисами отображается Связанные даты Информация. Под Связанные даты title, в нем указано время последнего изменения, время создания и время последней печати. См. Следующий снимок экрана:

Примечание: Этот способ доступен только в Microsoft Excel 2010/2013. Это недопустимо в Excel 2007.


стрелка синий правый пузырьПолучите время создания и время последнего изменения в Excel с помощью функции дополнительных свойств

Фактически, мы можем получить как время создания, так и время последнего изменения текущей книги в диалоговом окне «Свойства документа».
Шаг 1: Открой Дополнительные свойства диалоговое окно:

В Excel 2007 щелкните значок Офисы кнопка> Подготовить > ПредложенияИ Свойства документа панель будет отображаться под панелью инструментов, щелкните Свойства документа > Дополнительные свойства, смотрите скриншоты:

В Excel 2010/2013 щелкните значок Файл > Инфо > Предложения > Дополнительные свойства.

документ-вставка-измененное время-4-4

Шаг 2: В Дополнительные свойства В диалоговом окне вы увидите время создания и время последнего изменения на вкладке Статистика. См. Следующий снимок экрана:

документ-вставка-измененное время-4-4


стрелка синий правый пузырь Вставьте созданное время и время последнего изменения в ячейки Excel с кодом VBA

Следующие макросы VBA помогут вам напрямую вставить в ячейки время создания и время последнего изменения текущей информации книги.

Вставьте время создания и время последнего изменения в Excel

Шаг 1: Удерживайте ALT + F11 ключи, и он открывает окно Microsoft Visual Basic для приложений.

Шаг 2: Нажмите Вставить >> Модулии вставьте следующий макрос в окно модуля.

Код VBA: вставьте время создания и время последнего изменения в Excel

Sub Workbook_Open()
Range("A1").Value = Format(ThisWorkbook.BuiltinDocumentProperties("Creation Date"), "short date")
Range("A2").Value = Format(ThisWorkbook.BuiltinDocumentProperties("Last Save Time"), "short date")
End Sub

Шаг 3:Нажмите F5 ключ для запуска этого макроса. И тогда дата создания и дата последнего изменения будут вставлены в ячейку A1 и ячейку A2 отдельно.

Внимание: вы можете изменить ячейку назначения в VB в соответствии с вашими потребностями.

Вставить время последнего изменения книги в Excel

Шаг 1: Удерживайте ALT + F11 ключи, и он открывает окно Microsoft Visual Basic для приложений.

Шаг 2: Нажмите Вставить >> Модулии вставьте следующий макрос в окно модуля.

Public Function ModDate()
ModDate = Format(FileDateTime(ThisWorkbook.FullName), "m/d/yy h:n ampm")
End Function

Шаг 3: Затем сохраните и закройте этот код и вернитесь на рабочий лист, в пустой ячейке введите формулу = ModDate (), и нажмите Enter ключ. Затем он вставляет в ячейку время последнего изменения.

-2

Вставить созданное время книги в Excel

Шаг 1: Удерживайте ALT + F11 ключи, и он открывает окно Microsoft Visual Basic для приложений.

Шаг 2: Нажмите Вставить >> Модулии вставьте следующий макрос в окно модуля.

Function CreateDate() As Date
CreateDate = ActiveWorkbook.BuiltinDocumentProperties("Creation Date")
End Function

Шаг 3: Сохраните и закройте этот код, вернитесь на лист, в пустой ячейке введите формулу = CreateDate (), и нажмите Enter key. и созданная дата будет вставлена ​​в ячейку, как показано на следующих снимках экрана:

-2

Примечание: Если ваша ячейка не является форматом даты, она может отображать странное число. Просто отформатируйте эту ячейку как Время формат, он будет отображаться как обычная дата.


стрелка синий правый пузырь Вставьте время создания и время последнего изменения в ячейки/верхний/нижний колонтитул с помощью Kutools for Excel

Могу я представить вам удобный инструмент —Kutools for Excel какие из более чем 300 полезных функций могут повысить эффективность вашей работы? С этими Вставить информацию о книге Вы можете быстро вставить путь к книге, имя книги / рабочего листа, имя пользователя или время создания и время последнего изменения в ячейки, верхний или нижний колонтитул.

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

1. Нажмите Кутулс Плюс > Workbook > Вставить информацию о книге. Смотрите скриншот:
doc последнее изменение name2

2. Затем в Вставить информацию о книге диалоговом окне, проверьте информацию, которую вы хотите вставить из раздела информации, затем перейдите, чтобы указать место, в которое вы хотите вставить, вы можете выбрать ячейки, нижний колонтитул (левый нижний колонтитул, центральный нижний колонтитул, правый нижний колонтитул) или заголовок (левый верхний колонтитул, центральный верхний колонтитул, правый заголовок). Смотрите скриншот:
вставка документа создана, время изменения 1

3. Нажмите Ok, и проверяемая вами информация была вставлена ​​в указанное вами место.

Наконечник. Если вы хотите получить бесплатную пробную версию функции «Вставить информацию о книге», пожалуйста, перейдите к бесплатной загрузке Kutools for Excel сначала, а затем перейдите к применению операции в соответствии с вышеуказанными шагами.

стрелка синий правый пузырь Вставить информацию о книге


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

 

r_kot

Пользователь

Сообщений: 139
Регистрация: 01.01.1970

Формула с помощью которой узнаю первоначальную дату ввода в пустую ячейку =ЕСЛИ(C9>0;ЕСЛИ(C10<ТДАТА();C10;ТДАТА());»») , а как узнать дату последнего изменения ячейки не удаляя предварительно данных из этой ячейки?

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

если, как в файле, с помощью итераций, то нужны доп. ячейки для хранения предыдущего значения ячейки.

 

r_kot

Пользователь

Сообщений: 139
Регистрация: 01.01.1970

{quote}{login=vikttur}{date=04.07.2011 06:43}{thema=}{post}если, как в файле, с помощью итераций, то нужны доп. ячейки для хранения предыдущего значения ячейки.{/post}{/quote}  

  А как на счет циклических сссылок?

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Меню Сервис-Параметры-вычисления-Итерации. Галочку видите. Итеративные вычисления разрешены, а при итерациях разрешены также циклические ссылки.

 

r_kot

Пользователь

Сообщений: 139
Регистрация: 01.01.1970

{quote}{login=vikttur}{date=05.07.2011 08:13}{thema=}{post}Меню Сервис-Параметры-вычисления-Итерации. Галочку видите. Итеративные вычисления разрешены, а при итерациях разрешены также циклические ссылки.{/post}{/quote}  

  А если на другом компьютере не будут включены интеграции, работать не будет? И не могу соообразить какие формулы в доп. ячейках для хранения предыдущего значения ячейки, если не трудно vikttur, подскажи плиз!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

{quote}{login=r_kot}{date=05.07.2011 09:36}{thema=Re: }{post}{quote}{login=vikttur}{date=05.07.2011 08:13}{thema=}{post}Меню Сервис-Параметры-вычисления-Итерации. Галочку видите. Итеративные вычисления разрешены, а при итерациях разрешены также циклические ссылки.{/post}{/quote}  
А если на другом компьютере не будут включены интеграции, работать не будет?{/post}{/quote}  
Проверить не получается?  
Итерации действуют в книге, в которой они включены. Но если при открытой книге с итерациями закрыть другую, в ней (другой) тоже включатся итеративные вычисления.  

  Так как все-равно используете макросы, отслеживание изменений лучше тоже делать на VBA.

 

r_kot

Пользователь

Сообщений: 139
Регистрация: 01.01.1970

Я первый раз сталкиваюсь с такой формулой =—(D2=0)и у меня в примере всегда показывает 0 , не пойму как работает этот алгоритм, как научиться строить такие, где почитать?

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#8

05.07.2011 11:53:33

{quote}{login=r_kot}{date=05.07.2011 11:47}{thema=Re:}{post}…у меня в примере всегда показывает 0…{/post}{/quote}  
Не всегда, Вы просто не успеваете увидеть :)  
Поставьте Число_итераций=1, для вычисления нажимайте F9.

0 / 0 / 0

Регистрация: 18.03.2014

Сообщений: 3

1

Дата посленднего изменения ячеек

18.03.2014, 17:38. Показов 31947. Ответов 5


Студворк — интернет-сервис помощи студентам

Доброго всем времени суток.
Столкнулся со следующим вопросом. Есть база данных в экселе — более 1500 контактов. Обзаванивать призодится часто и не по-одному разу. В голове не удерживается информация кому и когда звонил. Хочу в столбце следующем за тем, где вношу изменения по остаткам, чтобы отображалась дата и время последнего изменения ячейки стобца с остатками. Надеюсь не сильно закрутил.
Заранее благодарю всех откликнувшихся!!!
З.Ы. С глубоки почтением к всем тем, кто сумел подлуржиться с языакми программирования — ОЧЕНЬ прошу написать «как для чайника» — что нажимать и куда что копировать.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

18.03.2014, 17:38

5

Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.03.2014, 17:59

2

Допустим, надо отслеживать изменения в ст. В и вносить дату в ст. С. В модуль листа (правый клик по ярлычку листа — Исходный текст)

Visual Basic
1
2
3
4
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Intersect(Columns("B"), Target(1)).Offset(, 1) = Now
End Sub

Если другой столбец — поменяйте букву в кавычках.
Формат столбца с датами установите по желанию.



2



0 / 0 / 0

Регистрация: 18.03.2014

Сообщений: 3

18.03.2014, 18:10

 [ТС]

3

Спасибо за оперативность!!!
Ниже — это я правильно сделал???

Дата посленднего изменения ячеек



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.03.2014, 18:35

4

Попробуйте менять ячейки в ст. К. Если в соседнем столбце появляется дата, то да.



0



0 / 0 / 0

Регистрация: 18.03.2014

Сообщений: 3

18.03.2014, 18:37

 [ТС]

5

АГРОМНОЕ СПАСИБО!!! РАБОТАЕТ!!!!! )))))))))))))))))))))))))))))))))))))))))))))))) )))))))))))))))))))))))))))



0



0 / 0 / 0

Регистрация: 10.03.2019

Сообщений: 111

02.12.2019, 20:01

6

Доброго дня и ночи. Не подскажите как можно заменить в написанном выше коде Intersect(Columns(«B»), Target(1)).Offset(, 1) = Now на например Intersect(Columns(«A:H» ) , чтобы дата изменения ставилась в строго одном столбце. Имеется массив несколько столбцов, если произошло изменение в строке из нескольких столбцов нужно что бы изменения фиксировались в одном столбце?



0



Содержание

  • Работа с функциями даты и времени
    • ДАТА
    • РАЗНДАТ
    • ТДАТА
    • СЕГОДНЯ
    • ВРЕМЯ
    • ДАТАЗНАЧ
    • ДЕНЬНЕД
    • НОМНЕДЕЛИ
    • ДОЛЯГОДА
  • Вопросы и ответы

Функции даты и времени в Microsoft Excel

Одной из самых востребованных групп операторов при работе с таблицами Excel являются функции даты и времени. Именно с их помощью можно проводить различные манипуляции с временными данными. Дата и время зачастую проставляется при оформлении различных журналов событий в Экселе. Проводить обработку таких данных – это главная задача вышеуказанных операторов. Давайте разберемся, где можно найти эту группу функций в интерфейсе программы, и как работать с самыми востребованными формулами данного блока.

Работа с функциями даты и времени

Группа функций даты и времени отвечает за обработку данных, представленных в формате даты или времени. В настоящее время в Excel насчитывается более 20 операторов, которые входят в данный блок формул. С выходом новых версий Excel их численность постоянно увеличивается.

Любую функцию можно ввести вручную, если знать её синтаксис, но для большинства пользователей, особенно неопытных или с уровнем знаний не выше среднего, намного проще вводить команды через графическую оболочку, представленную Мастером функций с последующим перемещением в окно аргументов.

  1. Для введения формулы через Мастер функций выделите ячейку, где будет выводиться результат, а затем сделайте щелчок по кнопке «Вставить функцию». Расположена она слева от строки формул.
  2. Перемещение в Мастер функций в Microsoft Excel

  3. После этого происходит активация Мастера функций. Делаем клик по полю «Категория».
  4. Мастер функций в Microsoft Excel

  5. Из открывшегося списка выбираем пункт «Дата и время».
  6. Выбор категории функций в Microsoft Excel

  7. После этого открывается перечень операторов данной группы. Чтобы перейти к конкретному из них, выделяем нужную функцию в списке и жмем на кнопку «OK». После выполнения перечисленных действий будет запущено окно аргументов.

Переход к аргументам функции в Microsoft Excel

Кроме того, Мастер функций можно активировать, выделив ячейку на листе и нажав комбинацию клавиш Shift+F3. Существует ещё возможность перехода во вкладку «Формулы», где на ленте в группе настроек инструментов «Библиотека функций» следует щелкнуть по кнопке «Вставить функцию».

Переход к вставке функции в Microsoft Excel

Имеется возможность перемещения к окну аргументов конкретной формулы из группы «Дата и время» без активации главного окна Мастера функций. Для этого выполняем перемещение во вкладку «Формулы». Щёлкаем по кнопке «Дата и время». Она размещена на ленте в группе инструментов «Библиотека функций». Активируется список доступных операторов в данной категории. Выбираем тот, который нужен для выполнения поставленной задачи. После этого происходит перемещение в окно аргументов.

Переход к формулам в Microsoft Excel

Урок: Мастер функций в Excel

ДАТА

Одной из самых простых, но вместе с тем востребованных функций данной группы является оператор ДАТА. Он выводит заданную дату в числовом виде в ячейку, где размещается сама формула.

Его аргументами являются «Год», «Месяц» и «День». Особенностью обработки данных является то, что функция работает только с временным отрезком не ранее 1900 года. Поэтому, если в качестве аргумента в поле «Год» задать, например, 1898 год, то оператор выведет в ячейку некорректное значение. Естественно, что в качестве аргументов «Месяц» и «День» выступают числа соответственно от 1 до 12 и от 1 до 31. В качестве аргументов могут выступать и ссылки на ячейки, где содержатся соответствующие данные.

Lumpics.ru

Для ручного ввода формулы используется следующий синтаксис:

=ДАТА(Год;Месяц;День)

Функция ДАТА в Microsoft Excel

Близки к этой функции по значению операторы ГОД, МЕСЯЦ и ДЕНЬ. Они выводят в ячейку значение соответствующее своему названию и имеют единственный одноименный аргумент.

РАЗНДАТ

Своего рода уникальной функцией является оператор РАЗНДАТ. Он вычисляет разность между двумя датами. Его особенность состоит в том, что этого оператора нет в перечне формул Мастера функций, а значит, его значения всегда приходится вводить не через графический интерфейс, а вручную, придерживаясь следующего синтаксиса:

=РАЗНДАТ(нач_дата;кон_дата;единица)

Из контекста понятно, что в качестве аргументов «Начальная дата» и «Конечная дата» выступают даты, разницу между которыми нужно вычислить. А вот в качестве аргумента «Единица» выступает конкретная единица измерения этой разности:

  • Год (y);
  • Месяц (m);
  • День (d);
  • Разница в месяцах (YM);
  • Разница в днях без учета годов (YD);
  • Разница в днях без учета месяцев и годов (MD).

Функция РАЗНДАТ в Microsoft Excel

Урок: Количество дней между датами в Excel

ЧИСТРАБДНИ

В отличии от предыдущего оператора, формула ЧИСТРАБДНИ представлена в списке Мастера функций. Её задачей является подсчет количества рабочих дней между двумя датами, которые заданы как аргументы. Кроме того, имеется ещё один аргумент – «Праздники». Этот аргумент является необязательным. Он указывает количество праздничных дней за исследуемый период. Эти дни также вычитаются из общего расчета. Формула рассчитывает количество всех дней между двумя датами, кроме субботы, воскресенья и тех дней, которые указаны пользователем как праздничные. В качестве аргументов могут выступать, как непосредственно даты, так и ссылки на ячейки, в которых они содержатся.

Синтаксис выглядит таким образом:

=ЧИСТРАБДНИ(нач_дата;кон_дата;[праздники])

Аргументы функции ЧИСТОРАБДНИ в Microsoft Excel

ТДАТА

Оператор ТДАТА интересен тем, что не имеет аргументов. Он в ячейку выводит текущую дату и время, установленные на компьютере. Нужно отметить, что это значение не будет обновляться автоматически. Оно останется фиксированным на момент создания функции до момента её перерасчета. Для перерасчета достаточно выделить ячейку, содержащую функцию, установить курсор в строке формул и кликнуть по кнопке Enter на клавиатуре. Кроме того, периодический пересчет документа можно включить в его настройках. Синтаксис ТДАТА такой:

=ТДАТА()

Функция ТДАТА в Microsoft Excel

СЕГОДНЯ

Очень похож на предыдущую функцию по своим возможностям оператор СЕГОДНЯ. Он также не имеет аргументов. Но в ячейку выводит не снимок даты и времени, а только одну текущую дату. Синтаксис тоже очень простой:

=СЕГОДНЯ()

Функция СЕГОДНЯ в Microsoft Excel

Эта функция, так же, как и предыдущая, для актуализации требует пересчета. Перерасчет выполняется точно таким же образом.

ВРЕМЯ

Основной задачей функции ВРЕМЯ является вывод в заданную ячейку указанного посредством аргументов времени. Аргументами этой функции являются часы, минуты и секунды. Они могут быть заданы, как в виде числовых значений, так и в виде ссылок, указывающих на ячейки, в которых хранятся эти значения. Эта функция очень похожа на оператор ДАТА, только в отличии от него выводит заданные показатели времени. Величина аргумента «Часы» может задаваться в диапазоне от 0 до 23, а аргументов минуты и секунды – от 0 до 59. Синтаксис такой:

=ВРЕМЯ(Часы;Минуты;Секунды)

Функция ВРЕМЯ в Microsoft Excel

Кроме того, близкими к этому оператору можно назвать отдельные функции ЧАС, МИНУТЫ и СЕКУНДЫ. Они выводят на экран величину соответствующего названию показателя времени, который задается единственным одноименным аргументом.

ДАТАЗНАЧ

Функция ДАТАЗНАЧ очень специфическая. Она предназначена не для людей, а для программы. Её задачей является преобразование записи даты в обычном виде в единое числовое выражение, доступное для вычислений в Excel. Единственным аргументом данной функции выступает дата как текст. Причем, как и в случае с аргументом ДАТА, корректно обрабатываются только значения после 1900 года. Синтаксис имеет такой вид:

=ДАТАЗНАЧ (дата_как_текст)

Функция ДАТАЗНАЧ в Microsoft Excel

ДЕНЬНЕД

Задача оператора ДЕНЬНЕД – выводить в указанную ячейку значение дня недели для заданной даты. Но формула выводит не текстовое название дня, а его порядковый номер. Причем точка отсчета первого дня недели задается в поле «Тип». Так, если задать в этом поле значение «1», то первым днем недели будет считаться воскресенье, если «2» — понедельник и т.д. Но это не обязательный аргумент, в случае, если поле не заполнено, то считается, что отсчет идет от воскресенья. Вторым аргументом является собственно дата в числовом формате, порядковый номер дня которой нужно установить. Синтаксис выглядит так:

=ДЕНЬНЕД(Дата_в_числовом_формате;[Тип])

Функция ДЕНЬНЕД в Microsoft Excel

НОМНЕДЕЛИ

Предназначением оператора НОМНЕДЕЛИ является указание в заданной ячейке номера недели по вводной дате. Аргументами является собственно дата и тип возвращаемого значения. Если с первым аргументом все понятно, то второй требует дополнительного пояснения. Дело в том, что во многих странах Европы по стандартам ISO 8601 первой неделей года считается та неделя, на которую приходится первый четверг. Если вы хотите применить данную систему отсчета, то в поле типа нужно поставить цифру «2». Если же вам более по душе привычная система отсчета, где первой неделей года считается та, на которую приходится 1 января, то нужно поставить цифру «1» либо оставить поле незаполненным. Синтаксис у функции такой:

=НОМНЕДЕЛИ(дата;[тип])

Функция НОМНЕДЕЛИ в Microsoft Excel

ДОЛЯГОДА

Оператор ДОЛЯГОДА производит долевой расчет отрезка года, заключенного между двумя датами ко всему году. Аргументами данной функции являются эти две даты, являющиеся границами периода. Кроме того, у данной функции имеется необязательный аргумент «Базис». В нем указывается способ вычисления дня. По умолчанию, если никакое значение не задано, берется американский способ расчета. В большинстве случаев он как раз и подходит, так что чаще всего этот аргумент заполнять вообще не нужно. Синтаксис принимает такой вид:

=ДОЛЯГОДА(нач_дата;кон_дата;[базис])

Функция ДОЛЯГОДА в Microsoft Excel

Мы прошлись только по основным операторам, составляющим группу функций «Дата и время» в Экселе. Кроме того, существует ещё более десятка других операторов этой же группы. Как видим, даже описанные нами функции способны в значительной мере облегчить пользователям работу со значениями таких форматов, как дата и время. Данные элементы позволяют автоматизировать некоторые расчеты. Например, по введению текущей даты или времени в указанную ячейку. Без овладения управлением данными функциями нельзя говорить о хорошем знании программы Excel.

Отображение даты и времени изменения ячейки

ArkaIIIa

Дата: Четверг, 05.06.2014, 16:34 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Господа,

В приложенном файле есть готовый макрос, который показывает в столбце B даты и время изменения соответствующих строк столбца A.
Помогите, пожалуйста, преобразовать его таким образом, чтобы он просматривал столбцы, а не строки. Т.е., чтобы при изменении ячейки A1 — в ячейке A5 отображалась дата и время изменения, при изменении ячейки B1 — в B5 и т.д.

К сообщению приложен файл:

__01.xls
(40.5 Kb)

 

Ответить

Karbofox

Дата: Четверг, 05.06.2014, 16:42 |
Сообщение № 2

Группа: Проверенные

Ранг: Участник

Сообщений: 69


Репутация:

16

±

Замечаний:
0% ±


Excel 2010

Это имелось в виду?
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range(«A1:IV1»)) Is Nothing Then
Application.EnableEvents = False
With Target.Offset(4, 0)
If Target <> Old_Value Then
.Value = Now
.EntireColumn.AutoFit
End If
End With
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range(«A1:IV1»)) Is Nothing Then
Old_Value = Target.Value
End If
End Sub

[/vba]

Сообщение отредактировал KarbofoxЧетверг, 05.06.2014, 16:43

 

Ответить

ArkaIIIa

Дата: Четверг, 05.06.2014, 16:44 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Karbofox
Да, именно это, спасибо большое!

 

Ответить

Rioran

Дата: Четверг, 05.06.2014, 16:53 |
Сообщение № 4

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ArkaIIIa, здравствуйте.

Посмотрите на такую переделку. Принцип:

1). Поменял EntireColumn.AutoFit на EntireRow.Autofit
2). Поменял каждый Range с A1:A100… на B1:AA4 в обоих макросах листа
3). Поменял Target.Offset(0, 1) на Target.Offset(5 — ActiveCell.Row, 0)

***

По скорости ответа меня опередили =) однако замечу, что в моём решении будет проставляться время, если изменена любая из 4-х строк выше ячейки времени.

К сообщению приложен файл:

one_way.xls
(47.5 Kb)

Сообщение отредактировал RioranЧетверг, 05.06.2014, 16:55

 

Ответить

ArkaIIIa

Дата: Четверг, 05.06.2014, 17:13 |
Сообщение № 5

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Rioran
Очень здорово. Но возник вопрос. Почему эти макросы (Ваш и Karbofox`а) работают только во вновь созданных книгах?
При переносе на ранее созданную — почему то они не работают :-(

 

Ответить

Rioran

Дата: Четверг, 05.06.2014, 17:20 |
Сообщение № 6

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ArkaIIIa, у них нет никакого якоря за книгой. В какой лист их вставите — там и будут работать, лишь бы Range, с которым работаем, на самом листе находился где надо.

***

Попробовал продублировать макросы внутри листа два раза — выдает ошибку. Значит, на одном листе в один и тот же момент должны быть только один Worksheet_Change и Worksheet_SelectionChange

Сообщение отредактировал RioranЧетверг, 05.06.2014, 17:22

 

Ответить

ArkaIIIa

Дата: Четверг, 05.06.2014, 17:28 |
Сообщение № 7

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Rioran
Проблема вот в чем. У меня при помощи макроса, который прописан в модуле, из ячеек A1:A20 (условно) копируются и вставляются в ячейки B1:B20 (условно) данные.
Нужно, чтобы в B21 прописывалась дата и время вставки. Вот если руками менять данные в строке, на которую ссылается Ваш или Karbofox`а макрос — то всё ок, дата и время прописываются ниже. А если эти данные вставляются при помощи макроса — то VBA ругается.

Сообщение отредактировал ArkaIIIaЧетверг, 05.06.2014, 17:32

 

Ответить

ArkaIIIa

Дата: Четверг, 05.06.2014, 17:30 |
Сообщение № 8

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Rioran
Я думал, что макросу все равно, каким образом вносятся изменения в ячейку, и важен сам факт изменения. Но, выходит, что это не так. Почему-то конфликтуют макросы.

Сообщение отредактировал ArkaIIIaЧетверг, 05.06.2014, 17:30

 

Ответить

ArkaIIIa

Дата: Четверг, 05.06.2014, 17:36 |
Сообщение № 9

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Rioran
В общем, если на живом примере, то вот это в модуле:

[vba]

Код

Sub Update_()
     Path_1 = «F:STALE_APP_REPORT.xls»
     iFileDateTime_1 = FileDateTime(Path_1)
     Cells(27, 11) = iFileDateTime_1
     ActiveWorkbook.UpdateLink Name:= _
         «F:STALE_APP_REPORT.xls», Type:=xlExcelLinks
     Dim r As Range
     Set r = Sheets(7).Rows(2).Find(Sheets(7).[B1].Text, , xlValues, xlWhole)
     If Not r Is Nothing Then
         Sheets(7).[B3:B140].Copy
         r.Offset(1).PasteSpecial Paste:=xlPasteValues
     End If
End Sub

[/vba]

Т.е.
1) Обновляются связи с исходником
2) Прописывается время обновления исходника
3) Данные из ячеек B3:B140 листа7 копируются в соответствующие ячейки на листе 7 (смотрит время обновления исходника и вставляет в столбец, где указано такое же время)
4) Нужно, чтобы в 141 строке тех столбцов, куда вставляются данные, указывалась дата и время этой вставки.

 

Ответить

Rioran

Дата: Четверг, 05.06.2014, 17:41 |
Сообщение № 10

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ArkaIIIa, Вам нужно чтобы одновременно менялось сразу два значения?

В следующем примере макросы уже, возможно, лишнее и разумнее было бы воспользоваться поиском максимального значения, но машина запущена и сделано макросом, посмотрите =)

 

Ответить

RAN

Дата: Четверг, 05.06.2014, 17:46 |
Сообщение № 11

Группа: Друзья

Ранг: Экселист

Сообщений: 5645


то это в файле.
Ваша
[vba][/vba]
сама по себе, а ошибка возникает совсем в другом месте.

 

Ответить

Rioran

Дата: Четверг, 05.06.2014, 17:46 |
Сообщение № 12

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ArkaIIIa, понял, реальная задача оказалась другой. Подумаем.

 

Ответить

ArkaIIIa

Дата: Пятница, 06.06.2014, 08:11 |
Сообщение № 13

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

RAN
Рабочий файл — очень объемный, и там много конфиденциальной информации. Его очень сложно будет почистить, чтобы выложить для примера :-(

Rioran
Разве вставка новых данных в ячейку (т.е. замещение одних данных другими) — не является её изменением?
Мне важно, чтобы макрос вставлял дату и время обновления любой ячейки, в рамках указанного диапазона в одном столбце. Т.е. у меня данные из B3:B140, вставляются в C3:С140, D3:D140 и т.д.
Макрос уважаемого Karbofox`а корректно работает, если данные не копипастятся, а забиваются вручную. Вы могли бы помочь адаптировать его именно под вставляемые данные?
Либо добавить что-то в эту часть макроса:
[vba]

Код

Dim r As Range
      Set r = Sheets(7).Rows(2).Find(Sheets(7).[B1].Text, , xlValues, xlWhole)
      If Not r Is Nothing Then
          Sheets(7).[B3:B140].Copy
          r.Offset(1).PasteSpecial Paste:=xlPasteValues
      End If

[/vba]
, чтобы после вставки значений, строчкой ниже указывалась дата/время вставки?

Извиняюсь, что, возможно, как-то не так изначально сформулировал задачу и большое спасибо за попытку помочь.

Сообщение отредактировал ArkaIIIaПятница, 06.06.2014, 08:11

 

Ответить

ArkaIIIa

Дата: Пятница, 06.06.2014, 08:57 |
Сообщение № 14

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Попробовал смоделировать ситуацию на новом пустом файле.
Использовал макрос:
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range(«A1:IV1»)) Is Nothing Then
Application.EnableEvents = False
With Target.Offset(4, 0)
If Target <> Old_Value Then
.Value = Now
.EntireColumn.AutoFit
End If
End With
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range(«A1:IV1»)) Is Nothing Then
Old_Value = Target.Value
End If
End Sub

[/vba]
В случае, если копируется-вставляется 1 ячейка — все в порядке.
В случае, если копируется-вставляется более 1 ячейки — появляется меседжбокс с текстом «Run-time Error `13`: Type mismatch». И после этого в данной книге макрос перестает работать, подсвечивая желтым часть кода:
[vba]

Код

If Target <> Old_Value Then

[/vba]

 

Ответить

Rioran

Дата: Пятница, 06.06.2014, 10:38 |
Сообщение № 15

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ArkaIIIa, я попробовал кардинально другой подход.

В области А1:J10 (отгорожено серым в файле) вставляйте оптом и смотрите, как меняются подписи на серой панели.

[vba]

Код

Option Explicit
Public Stopper As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False

Dim rngX As Range
Dim X As Long

Set rngX = Selection

If Not Intersect(rngX, Range(«a1:j10»)) Is Nothing And Stopper = False Then
     Stopper = True
     For X = 1 To rngX.Columns.Count
         rngX.Cells(1, X).Offset(11 — rngX.Cells(1, X).Row).Value = Now
     Next X
     Stopper = False
End If

Application.ScreenUpdating = True

End Sub

[/vba]

 

Ответить

ArkaIIIa

Дата: Пятница, 06.06.2014, 11:03 |
Сообщение № 16

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Rioran
Если руками копирую — вставляю — всё хорошо. Если использую макрос вставки, вот этот:
[vba]

Код

    Dim r As Range
     Set r = Sheets(7).Rows(2).Find(Sheets(7).[B1].Text, , xlValues, xlWhole)
     If Not r Is Nothing Then
         Sheets(7).[B3:B140].Copy
         r.Offset(1).PasteSpecial Paste:=xlPasteValues
     End If

[/vba]
, то выдает ошибку Run-time Error 1004: Method `Intersect` of object`_Global`failed
Т.е. я само-собой меняю указанный в Вашем макросе диапазон «a1:j10» на свой «c28:aj140» и строку с 11 на 141, и при вставке руками — все нормально работает. А вот, когда юзаю макрос вставки — беда.

 

Ответить

ArkaIIIa

Дата: Пятница, 06.06.2014, 11:14 |
Сообщение № 17

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Rioran
Нет, Вы знаете, видимо конфликт не с макросом вставки. Попробовал сделать на новом файле — все нормально работает. Сейчас более расширенный пример попробую сделать и закинуть.

 

Ответить

Rioran

Дата: Пятница, 06.06.2014, 11:24 |
Сообщение № 18

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013


Всё дело в том, что в моём макросе простановка изменений по столбцу привязана к выделению. Просто симитируйте выделение мышью, как например здесь:

[vba]

Код

Sub Data_Transition_2()

Range(«m1:N3»).Copy
Range(«F2»).Select
Worksheets(«Tryal»).Paste

End Sub

[/vba]
Файл с кнопкой для теста прилагаю.

К сообщению приложен файл:

2747659.xlsm
(22.3 Kb)

Сообщение отредактировал RioranПятница, 06.06.2014, 11:25

 

Ответить

ArkaIIIa

Дата: Пятница, 06.06.2014, 11:43 |
Сообщение № 19

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Rioran
Прикладываю файл. Голова кругом идет, не знаю, с чем связана ошибка :-(
Попробую еще раз по порядку описать ситуацию на примере файла из приложения.

— Есть файл (файл из приложения), в котороый по связям из другого файла подтягиваются данные. Файл исходник обновляется автоматически каждые полчаса. Таким образом, при каждом обновлении файла из примера раз в полчаса — он подтягивает обновленные данные.
— Есть 2 макроса, засунутых в один модуль:
Первый:
[vba]

Код

Sub Update_()
      Path_1 = «F:STALE_APP_REPORT.xls»
      iFileDateTime_1 = FileDateTime(Path_1)
      Cells(27, 11) = iFileDateTime_1
      ActiveWorkbook.UpdateLink Name:= _
          «F:STALE_APP_REPORT.xls», Type:=xlExcelLinks

[/vba]
Прописывает в ячейку K27 время последнего обновления файла-исходника, откуда тянутся данные в файл-пример.
Второй:
[vba]

Код

Dim r As Range
      Set r = Sheets(7).Rows(2).Find(Sheets(7).[B1].Text, , xlValues, xlWhole)
      If Not r Is Nothing Then
          Sheets(7).[B3:B140].Copy
          r.Offset(1).PasteSpecial Paste:=xlPasteValues
      End If
End Sub

[/vba]
Берет данные из ячеек столбца B3:B140, смотрит значение времени, указанное в ячейке B1, находит в строке 2 аналогичное время, и вставляет скопированные данные.
— Нужен третий макрос, который указывал бы строчкой ниже вставленных данных (т.е. 141-ой), дату и время этой вставки.

Ваш макрос (условно назовем его Макрос № 3) работает:
— Если копировать-вставлять руками
— Если копировать-вставлять макросом вставки (№2, из описания выше)
— Но вот если задействовано все 3 макроса — то возникает сообщение: Run-time Error 1004: Method `Intersect` of object`_Global`failed

Я не понимаю, на каком этапе возникает конфликт :-(

К сообщению приложен файл:

11.xlsm
(24.4 Kb)

Сообщение отредактировал ArkaIIIaПятница, 06.06.2014, 11:44

 

Ответить

RAN

Дата: Пятница, 06.06.2014, 12:19 |
Сообщение № 20

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Ваш файлик как бы поломатый.

К сообщению приложен файл:

3474154.jpg
(18.9 Kb)

Сообщение отредактировал RANПятница, 06.06.2014, 12:21

 

Ответить

Like this post? Please share to your friends:
  • Дата год excel на английском
  • Дата выходной или нет excel
  • Дата внесения данных в excel
  • Дата вместо текста excel
  • Дата в числовом формате excel это