首页
学习
活动
专区
圈层
工具
发布

唯一ID列
EN

Web Applications用户
提问于 2015-02-23 21:35:44
回答 1查看 5.2K关注 0票数 3

我有一个Google电子表格,当我在B列中输入信息时,我想在A列中创建一个唯一的数字。下面是我目前使用的公式,但是我想知道是否有一种方法来编辑它,这样它就可以代替CDI而有日期(日期标记)?

代码语言:javascript
复制
=ArrayFormula(if(len(B:B),"CDI"&text(row(A:A),"000000"),iferror(1/0)))

期望的最终结果如下:

02232015001

EN

回答 1

Web Applications用户

发布于 2015-06-29 23:07:41

您可以将"CDI"&text(row(A:A),"000000")替换为

代码语言:javascript
复制
text(month(now()),"00")&day(now())&year(now())&text(row(A:A),"000")

但这将是现在的时间戳,而不是单元格上一次更新的时间。

要捕获更新时间,您需要一个脚本。下面的脚本每次编辑电子表格时都运行,检查B列中是否有条目而没有C列中的条目,并在本例中向C列添加一个基于时间戳的ID。

代码语言:javascript
复制
function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell;
  var range = sheet.getRange("B:C");
  var values = range.getValues(); 
  for (var i=0; i<values.length; i++) {
    if (values[i][0] && !values[i][1]) {
      cell = range.getCell(i+1, 2);
      cell.setValue(formatDate()+('00'+cell.getRow()).slice(-3));
    }
  } 
}

function formatDate() {
  var month, day, d = new Date();
  month = ('0'+(d.getUTCMonth()+1)).slice(-2);
  day = ('0'+d.getUTCDate()).slice(-2);
  return d.getUTCFullYear()+month+day;
} 

结果如下:

代码语言:javascript
复制
+-----------+-------------+
|   Data    |  Timestamp  |
+-----------+-------------+
| something | 20150629002 |
|           |             |
| more      | 20150629004 |
| and more  | 20150629005 |
+-----------+-------------+

我把年份放在第一位,因为否则这个月的前零将被省略,降低了可读性。(另一种方法是将ID格式化为字符串,这在某种程度上没有吸引力)。

票数 2
EN
页面原文内容由Web Applications提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webapps.stackexchange.com/questions/74259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档