如何在 OnEdit 函数中使用 Vlookup

塞巴斯蒂安

所以我正在尝试创建一个考勤系统。基本上我想要的是人们能够在名为出勤的表格中输入他们的身份证号码。在该列中输入信息后,相邻列(第 2 列)将填充其名称,下一列(第三列)将填充输入时间。进入时间使用 new Date() 计算。但是我计划让它从位于名为“list”的工作表上的主列表中检索名称。“列表”表的 ID 在 A 列中,名称在 B 列中。所以我想要做的是让谷歌脚本通过查看最近编辑的单元格来模拟 Vlookup,然后在“列表”列 A 中搜索该值将相邻列中相应的“列表”列 B 值返回到刚刚编辑的单元格。我希望能够在整个“出勤”表中多次执行此操作。所以基本上,我们每天出勤将占据“出勤”表中的三列。

function onEdit(e) {
var sheet = e.source.getActiveSheet();
if (sheet.getName() === "Attendance") {
    var r = e.source.getActiveRange();
    if (r.getRow() != 1 && r.getColumn()%3 != 0 && r.getColumn()%3 != 2) {
    sheet.getRange(r.getRow(),r.getColumn()+2).setValue(new Date());
    var popsheet = SpreadsheetApp.getActiveSpreadsheet.GetSheetByName("list")
    var data=popsheet.getRange("A1:D100").getValues();
    for(i=0;i<data.length;++i){
    if (data[i][0]==r.GetValue()){
    sheet.getRange(r.getRow(),r.getColumn()+1).setValue(data[i][1]);
    }
    }
}

日期填充得很好,但名称不填充。我没有收到任何错误消息。我尝试将 var popsheet = ... 之后写入的所有内容更改为仅 sheet.getRange(r.getRow(),r.getColumn()+1.setValue("test") 并且它实际上确实在相邻的编辑单元格的列。所以这让我相信问题出在我试图模拟 Vlookup 上。

超人

试试这个:

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  if(sheet.getName()=="Attendance") {
    if (e.range.rowStart > 1 && e.range.columnStart % 3 == 1) {
      var sh=e.source.getSheetByName("list");
      e.source.toast(sh.getName());
      var data=sh.getRange(2,1,sh.getLastRow(),4).getValues();
      for(i=0;i<data.length;i++){
        if (data[i][0]==e.value){
          e.range.offset(0,1).setValue(data[i][2]);
          e.range.offset(0,2).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy HH:mm:ss"));
        }
      }
    }
  }
}

如果未找到名称,这将清除同一行的下两列。

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  if(sheet.getName()=="Attendance") {
    if (e.range.rowStart > 1 && e.range.columnStart % 3 == 1) {
      var sh=e.source.getSheetByName("list");
      e.source.toast(sh.getName());
      var data=sh.getRange(2,1,sh.getLastRow(),4).getValues();
      var found=false;
      for(i=0;i<data.length;i++){
        if (data[i][0]==e.value){
          e.range.offset(0,1).setValue(data[i][2]);
          e.range.offset(0,2).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy HH:mm:ss"));
          found=true;
        }
      }
      if(!found) {
        e.range.offset(0,1).setValue('');
        e.range.offset(0,2).setValue('');
      }
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在VLOOKUP函数中使用IF

来自分类Dev

如何在Excel中使用vlookup函数?

来自分类Dev

如何在多个Google表格中使用多个OnEdit功能

来自分类Dev

如何在Word VBA中使用VLookup?

来自分类Dev

如何在Excel中使用vlookup

来自分类Dev

如何在VBa中使用Vlookup?

来自分类Dev

如何在 VBA 中使用 VLookup 作为范围参数?

来自分类Dev

如何使用按钮运行 onEdit 功能

来自分类Dev

在Excel中使用Vlookup函数时出错

来自分类Dev

如何为onEdit(e)函数设置更近的范围?

来自分类Dev

如何使onEdit脚本运行

来自分类Dev

如何使用vlookup返回数组

来自分类Dev

如何在Excel VBA中使用VLOOKUP查找匹配的单元格

来自分类Dev

如何在Excel VBA中使用VLOOKUP查找匹配的单元格

来自分类Dev

如何在VBA中使用不同的工作表和变量来定义VLOOKUP中的范围?

来自分类Dev

在VLOOKUP中使用变量

来自分类Dev

在VLOOKUP中使用INDIRECT

来自分类Dev

在VLOOKUP中使用列名

来自分类Dev

使用onEdit函数无法获取范围

来自分类Dev

如何在IF语句中组合VLOOKUP,而IF语句中VLOOKUP函数的列索引是从文本中推断出来的数字?

来自分类Dev

在Excel VBA VLookup函数中使用索引和匹配

来自分类Dev

在 VLOOKUP 中使用间接函数查找 MAX ABS 时出错

来自分类Dev

如何使用 VLOOKUP 指定搜索列?

来自分类Dev

如何使用多个条件简化 VLOOKUP 公式

来自分类Dev

如何在CSV文件中的大行旁边重复小行?(也许是VLOOKUP函数?)

来自分类Dev

如何在mysql中使用聚合函数?

来自分类Dev

如何在函数中使用* args?

来自分类Dev

如何在PHP函数中使用指针?

来自分类Dev

如何在Swift中使用map函数?

Related 相关文章

热门标签

归档