【问题标题】:Google Sheets Search from Database and insert into specific cell on edit谷歌表格从数据库中搜索并在编辑时插入特定单元格
【发布时间】:2020-07-02 06:11:40
【问题描述】:

我需要比我更有经验的人的帮助。 我有以下公式

=WENNFEHLER(SVERWEIS($B$3;$B6:C;{2};0))

和下面的脚本

function copyIntoCell() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('C3').activate();
  spreadsheet.getRange('A3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};

如何将公式添加到脚本中,并在将名称输入 B3 时使其“onEdit”,当 B3 与数据库匹配时,它应该自动将数字从 B6:C 插入 C3。

当我在 B3 中输入一个单词时,它是否可以自动完成,它会建议我使用我输入的单词从数据库中获取名称?这个不重要,但会很好。

Here is the example

感谢任何帮助和想法,我可以完成我正在寻找的东西。

【问题讨论】:

  • 我不确定我是否正确理解了您的问题。您想将一个值从 A3 复制到 C3,还是想为单元格 C3 分配一个公式(当 B3 正在编辑时)?您是只想对第 3 行执行此操作,还是对相应列的任何行执行此操作?
  • 我想把这个公式 "=IFERROR(VLOOKUP($B$3;$B6:C;{2};0))" 放到 onEdit 触发事件中。当我在 B3 中输入名称时,脚本应该在数据库中搜索名称并获取 ID 的值并将其插入到 C3 中。如果数据库中没有名称,那么在 B3 中输入的内容应该什么都不做,所以我可以自己在 C3 中输入一个 ID 以将其添加到数据库中。 onEdit 功能应仅适用于 B3,而不适用于任何其他列

标签: arrays google-apps-script google-sheets google-sheets-formula google-sheets-vlookup


【解决方案1】:

组合脚本和公式如下:

  • 检查是否在 B 列中执行了编辑
  • 检索活动行
  • setFormula() 将您的公式分配给 C 列中的活动行
  • 如果在数据库中找不到输入的名称并且公式返回错误“#NAME?” - 再次删除公式
function onEdit(e) {
  //check if edit takes place in the second column (B)
  if(e.range.getA1Notation() =="B3"){
    //proceed
    var spreadsheet = SpreadsheetApp.getActive();
    var row = e.range.getRow();
    var formula = "=IFERROR(VLOOKUP($B$3,$B6:C,{2},0))";
    //set formula to active row in column C
    var cell = spreadsheet.getActiveSheet().getRange(row, 3);
    cell.setFormula(formula);
  }
};

【讨论】:

  • 感谢您的工作,但它不起作用。我在 C3 中看到的公式比它出现的#NAME?它会被清除。但是这个名字肯定在数据库中。是否可以使 (e.range.getColumn() ==2) 更改为 B3?也许您应该检查我添加到第一篇文章中的文档,如果您还没有,您可以顺便编辑文档。
  • 错误:每次都是未知函数。是否有可能获得其他工作?也许没有公式并使用脚本将其“硬编码”?
  • 如果您只想让它在单元格 B3 上工作,您可以将 if(e.range.getColumn() ==2) 更改为 if(e.range.getA1Notation() =="B3")。我明白了,我收到"#NAME?" 因为公式的英文版和德文版之间存在冲突。如果我理解正确,如果没有找到名称-C3无论如何都会为空,因此无需删除公式。我会更新我的答案。看看这是不是你的意思。根据您的设置 - 如果您的脚本需要公式的英文版本,则应为 =IFERROR(VLOOKUP($B$3,$B6:C,{2},0))
  • 现在工作正常,我将语言更改为英语。德国的不工作,我不知道为什么。无论如何谢谢你:)
  • 好像是bug
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
相关资源
最近更新 更多