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

Вход

Регистрация

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

 

= Мир MS Excel/Автоматическое проставление даты и время изменения ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Автоматическое проставление даты и время изменения ячейки
franky2118 Дата: Четверг, 27.06.2024, 10:59 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 0 ±
Замечаний: 0% ±

Добрый день! Для гугл-таблицы нужен макрос, при котором будет проставлять дата и время того, когда заполнилась другая ячейка. Например, ячейка N2 заполняется и в ячейке R2 проставляется дата и время заполнения ячейки N2.
 
Ответить
СообщениеДобрый день! Для гугл-таблицы нужен макрос, при котором будет проставлять дата и время того, когда заполнилась другая ячейка. Например, ячейка N2 заполняется и в ячейке R2 проставляется дата и время заполнения ячейки N2.

Автор - franky2118
Дата добавления - 27.06.2024 в 10:59
stc Дата: Воскресенье, 30.06.2024, 08:25 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 60% ±

Google sheets
[vba]
Код
function onEdit(a) {
var sheet = a.source.getActiveSheet();
var idCol = a.range.getColumn();
var idRow = a.range.getRow();
if ( idCol == 1 && sheet.getName() =='Лист1' )
{var vartoday = getDate();
sheet.getRange(idRow, 2).setValue( vartoday );}
else if (idCol != 1 && sheet.getName() !='Лист1')
{};}
function getDate() {
var today = new Date();
today.setDate(today.getDate());
return Utilities.formatDate(today, 'GMT+07:00', 'dd.MM.yyyy HH:mm');
}
//if ( idCol == 1 && sheet.getName() =='Лист1' ) - указываем ячейку (порядковый номер А=1,В=2 и т.д.) триггер - изменение которой будут давать сигнал на редактирование даты, в данном случае стоит 1 - значит смотрим столбец A;
//{var vartoday = getDate();sheet.getRange(idRow, 2).setValue( vartoday );}} - getRange(idRow, 1) - Указываем куда вставить дату 2 столбец - значит в B;
[/vba]
 
Ответить
Сообщение[vba]
Код
function onEdit(a) {
var sheet = a.source.getActiveSheet();
var idCol = a.range.getColumn();
var idRow = a.range.getRow();
if ( idCol == 1 && sheet.getName() =='Лист1' )
{var vartoday = getDate();
sheet.getRange(idRow, 2).setValue( vartoday );}
else if (idCol != 1 && sheet.getName() !='Лист1')
{};}
function getDate() {
var today = new Date();
today.setDate(today.getDate());
return Utilities.formatDate(today, 'GMT+07:00', 'dd.MM.yyyy HH:mm');
}
//if ( idCol == 1 && sheet.getName() =='Лист1' ) - указываем ячейку (порядковый номер А=1,В=2 и т.д.) триггер - изменение которой будут давать сигнал на редактирование даты, в данном случае стоит 1 - значит смотрим столбец A;
//{var vartoday = getDate();sheet.getRange(idRow, 2).setValue( vartoday );}} - getRange(idRow, 1) - Указываем куда вставить дату 2 столбец - значит в B;
[/vba]

Автор - stc
Дата добавления - 30.06.2024 в 08:25
Gustav Дата: Четверг, 04.07.2024, 20:29 | Сообщение № 3
Группа: Админы
Ранг: Участник клуба
Сообщений: 2769
Репутация: 1140 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Моя версия, более приближенная к заказанным условиям:
[vba]
Код
function onEdit(e) {
    const range = e.range;
    const sheet = range.getSheet();
    switch (sheet.getName()) {
        case 'Лист1':
            if (range.getA1Notation() == 'N2' && e.oldValue == undefined) {
                sheet.getRange('R2').setValue( new Date() );
            }
            break;
    }
}
[/vba]
Функционал проставлет/обновляет дату/время в ячейке R2 только в том случае, если перед этим ячейка N2 была пустой. Если же нужно обновление R2 после каждого изменения N2, то следует удалить условие:
[vba]
Код
&& e.oldValue == undefined
[/vba]
Желаемый формат отображения даты/времени в ячейке R2 следует установить вручную.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеМоя версия, более приближенная к заказанным условиям:
[vba]
Код
function onEdit(e) {
    const range = e.range;
    const sheet = range.getSheet();
    switch (sheet.getName()) {
        case 'Лист1':
            if (range.getA1Notation() == 'N2' && e.oldValue == undefined) {
                sheet.getRange('R2').setValue( new Date() );
            }
            break;
    }
}
[/vba]
Функционал проставлет/обновляет дату/время в ячейке R2 только в том случае, если перед этим ячейка N2 была пустой. Если же нужно обновление R2 после каждого изменения N2, то следует удалить условие:
[vba]
Код
&& e.oldValue == undefined
[/vba]
Желаемый формат отображения даты/времени в ячейке R2 следует установить вручную.

Автор - Gustav
Дата добавления - 04.07.2024 в 20:29
  • Страница 1 из 1
  • 1
Поиск:

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