我在物流行业工作,我正在尝试创建一个工作表,以便我的人员可以使用条形码/QR 扫描仪输入跟踪 ID 并让它执行以下操作:
将第一次在单元格中输入值的日期和时间记录到相邻单元格(例如:输入到B1,C1获取日期和时间,然后如果B1获取另一个值,C1不变。输入到任何其他列除非指定,否则将忽略 F-G 和 J-K)。
如果单元格为空或包含某些字符,则保持单元格为白色/无色(例如:如果未触及/包含“VN”,则为白色;如果有值但没有“VN”,则为红色)。
应用于相同的列,无论当前工作表如何(getActiveSheet?)。
抱歉不够具体,我不是编码员,只是想用 Gsheet 自动执行一些琐碎的任务。我正在考虑 onEdit(),但不知道它是否可以同时格式化和填充,同时减轻工作表的重量。
Tried =ARRAYFORMULA(IFS(B4:B10003="","",C4:C10003<>"",C4:C10003,1*1,Now()))
但它需要参考文献,这大大减慢了工作表的速度。哦,还有条件格式,可爱的工具。
我了解您对目标有 3 个要求。我了解到您是 Stackoverflow 的新手。我试图涵盖您帖子中明确的内容。
1.将某个单元格中第一次输入值的日期和时间记录到相邻单元格上(例如:输入到B1,C1得到日期和时间,然后如果B1得到另一个值,C1不变。输入到任何其他单元格)除非指定,否则将忽略 F-G 和 J-K 列)。
您在这方面走的是正确的道路,这可以通过利用 onEdit() 来实现。我在 Apps 脚本上创建了一个解决方案,供您涵盖这两个内容。
function onEdit(e) {
var editRow = e.range.getRow();
var editColumn = e.range.getColumn();
var tsRange = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(editRow,editColumn+1);
var tsValue = tsRange.getValue()
if(editColumn == 2 || editColumn == 6 || editColumn == 10){
if(tsValue == ""){
var date = new Date();
tsRange.setValue(date);}
}
}
如果您对 Apps 脚本的经验很少。请阅读此内容 文章了解更多如何在工作表上实现这一点。
你的第二个要点确实与我想要的第一个问题相差甚远 建议将其作为另一个问题以及附加的 有关您所指的单元格的信息, 颜色会改变,您需要引用的单元格是什么 进行更改。
由于
unless specified
缺乏特异性,我建议删除日期戳更适合您当前的工作流程,这样它仍然会很快,如果您有其他指定的操作,请随时发表评论。
请确保使用 Google 表格中的内置格式按钮将单元格预先格式化为您所需的格式。