我有一个Google电子表格,当我在B列中输入信息时,我想在A列中创建一个唯一的数字。下面是我目前使用的公式,但是我想知道是否有一种方法来编辑它,这样它就可以代替CDI而有日期(日期标记)?
=ArrayFormula(if(len(B:B),"CDI"&text(row(A:A),"000000"),iferror(1/0)))期望的最终结果如下:
02232015001
发布于 2015-06-29 23:07:41
您可以将"CDI"&text(row(A:A),"000000")替换为
text(month(now()),"00")&day(now())&year(now())&text(row(A:A),"000")但这将是现在的时间戳,而不是单元格上一次更新的时间。
要捕获更新时间,您需要一个脚本。下面的脚本每次编辑电子表格时都运行,检查B列中是否有条目而没有C列中的条目,并在本例中向C列添加一个基于时间戳的ID。
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;
} 结果如下:
+-----------+-------------+
| Data | Timestamp |
+-----------+-------------+
| something | 20150629002 |
| | |
| more | 20150629004 |
| and more | 20150629005 |
+-----------+-------------+我把年份放在第一位,因为否则这个月的前零将被省略,降低了可读性。(另一种方法是将ID格式化为字符串,这在某种程度上没有吸引力)。
https://webapps.stackexchange.com/questions/74259
复制相似问题