当我输入单元格时自动获取日期和时间,但在谷歌表格的单独列中

Posted

技术标签:

【中文标题】当我输入单元格时自动获取日期和时间,但在谷歌表格的单独列中【英文标题】:Automatically obtain date and time when I type in a cell but in separate columns at google sheets 【发布时间】:2021-08-21 09:23:34 【问题描述】:

我是新来的,提前道歉。我的问题是:我有一个包含多个单元格和两张工作表的谷歌电子表格。我想要做的是,当我在第 2 列的任何单元格中键入一个值时,时间和日期将自动出现在相邻的单元格中。我得到了这个代码,它只对我工作表 1:

function onEdit() 
var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() == "HOJA 1-HF-SSB" )  //checks that we're on the correct sheet
      var r = s.getActiveCell();
    if( r.getColumn() == 2 )  //checks the column
      var nextCell = r.offset(0, 1);
      if( nextCell.getValue() === '' ) //is empty?
        nextCell.setValue(new Date()).setNumberFormat("dd-MM-yyyy HH:mm");
    
  

然后我设法对其进行了简化并使其适用于文档的两页:

function onEdit(e) 
var sheets = ["HOJA 1-HF-SSB", "HOJA 2-FM-DMR"];
if (sheets.indexOf(e.source.getActiveSheet()
    .getName()) === -1 || e.range.columnStart !== 2) return;
e.range.offset(0, 1)
    .setValue(new Date()).setNumberFormat("dd-MM-yyyy HH:mm");
       

我的问题是:有没有办法将日期和时间放在单独的列中?也就是我填第2栏的时候,日期写在第3栏,时间写在第4栏?

我的最终目的,除了把日期和时间分开,就是以后确定(我不知道怎么做),并突出显示第2列中记录的哪些值在同一日期重复,将它们与第 3 列中的自动日期,与时间无关。谢谢,对不起,我是个新手!

【问题讨论】:

【参考方案1】:

尝试(仅适用于第 2 列)

function onEdit(e) 
  var sheets = ["HOJA 1-HF-SSB", "HOJA 2-FM-DMR"];
  if (sheets.indexOf(e.source.getActiveSheet().getName()) === -1 || e.range.getColumn() !== 2) return;
  var dateObj = new Date();
  var month = dateObj.getUTCMonth() + 1; //months from 1-12
  var day = dateObj.getUTCDate();
  var year = dateObj.getUTCFullYear();
  var newdate = year + "/" + month + "/" + day;
  e.range.offset(0, 1).setValue(newdate).setNumberFormat("dd-MM-yyyy");
  e.range.offset(0, 2).setValue(new Date()).setNumberFormat("HH:mm");

https://docs.google.com/spreadsheets/d/1NYxNfoPM6l_PJTPBDxEth2n-T_H0o03FG6C0OMDuJOo/copy

【讨论】:

好的,对我有用!现在我在不同的列中有日期和时间(日期为 3,时间为 4),是否可以突出显示第 2 列中的重复值,但只能在同一日期(不是时间)?对不起,如果我的解释难以理解。我只需要突出显示在同一天写入的第 2 列中的值(由第 3 列中的日期确定)。谢谢和抱歉!另一种选择是,例如,当 B10 和 C10 在任何上一行的值和日期重合时,在另一列中写入“DUPPED”......我不知道什么是更好的选择,更容易。 选择 B 列,然后使用此公式应用条件格式=COUNTIF($C:$C,$C1)>1 说“无效”。选择整个 B 列并应用 =COUNTIF($C:$C,$C1)>1。你能解释一下这个公式吗?我正在尝试这样做:当相同的文本和相同的日期匹配时,突出显示重复项。换句话说:我需要突出显示 B 列中在同一列中相互重复并且同时与 C 列中的同一日期重合的那些值... 我不知道你的地区是什么!我给你举个例子,我还会在 B 列添加相等的搜索,对不起,这是一个错误。 在西班牙语语言环境中,公式为 =(COUNTIF($C:$C;$C1)>1)*(COUNTIF($B:$B;$B1)>1) > 0 我已在答案中添加了电子表格的副本。

以上是关于当我输入单元格时自动获取日期和时间,但在谷歌表格的单独列中的主要内容,如果未能解决你的问题,请参考以下文章

使用javascript,当我单击表格单元格时如何获取它的背景颜色?

在谷歌表格中提取特定单元格的公式

如何在谷歌脚本中将文本作为日期插入单元格? (符合时区转换)

使用 VBA 选择特定单元格时如何保存工作簿?

如何在不拖入谷歌表格的情况下自动填充日期列?

为啥设置“可见性:隐藏”时表格单元格边框在谷歌浏览器中消失和“边界崩溃:崩溃;”?