Events 如何自动复制单元格';当具有公式的单元格的值发生变化时,是否为s值?

Events 如何自动复制单元格';当具有公式的单元格的值发生变化时,是否为s值?,events,google-apps-script,google-sheets,Events,Google Apps Script,Google Sheets,电子表格数据:经济数据提要(名称)-此电子表格包含两张表格,即“结果”和“触发器” 什么:在我的电子表格“经济数据提要”和表格“结果”中,单元格C5包含一个公式。这个公式告诉我,根据“股市信心”表中的数据,是否选择了看涨或看跌反转 根据IFS公式,它有3种可能的结果,即“选择熊市反转”、“选择牛市反转”或“选择无反转” 挑战:无论何时选举出这些逆转,它们的有效期都是6个月,直到1年。它们(反转选举)基于同一电子表格中导入的经济数据。由于经济数据源经常更新,因此信号将消失。这就是问题所在 想象一下

电子表格数据:经济数据提要(名称)-此电子表格包含两张表格,即“结果”和“触发器”

什么:在我的电子表格“经济数据提要”和表格“结果”中,单元格C5包含一个公式。这个公式告诉我,根据“股市信心”表中的数据,是否选择了看涨或看跌反转

根据IFS公式,它有3种可能的结果,即“选择熊市反转”、“选择牛市反转”或“选择无反转”

挑战:无论何时选举出这些逆转,它们的有效期都是6个月,直到1年。它们(反转选举)基于同一电子表格中导入的经济数据。由于经济数据源经常更新,因此信号将消失。这就是问题所在

想象一下,有一天选择反转,比如说看涨反转,第二天“股市信心”表中的经济数据更新,信号消失,C5中的单元格变回“未选择反转”

我需要什么:每当工作表“结果”中的单元格C5选择反转时,我需要将单元格值(仅单元格值)自动复制到另一张工作表中同一电子表格中的另一个位置,我设想将其称为“反转选择”。这是必要的,以便信号不会消失,因为如前所述,经济数据馈送正在频繁更新。此外,我需要复印撤销选举的日期

以下屏幕截图是同一电子表格中的不同表格:

理想的实现方式:

  • 表“结果”中的单元格C5根据IFS公式选择反转

  • C5中的值(仅限值,不包括公式)以及 取消选举的日期将自动复制到 在其他地方,最好在触发器中的同一个电子表格中


  • 是的,您可以获得一个触发器来更新值。下面的代码应该工作,我做了。如果你复制它,你可以有自己的版本在看它

    你可能想

    下面的代码可能适用于我认为您正在寻找的内容(请记住,这是堆栈溢出,所以我们对牛市和熊市——甚至是运动队——不太了解)。这将在C5中的值发生变化时在日志表上写入新行。请注意,这是使用基于单元格B1中LoggedResults表中公式中链接值的公式比较。如果你玩弄你自己的版本,我想可能会更有意义

    /**
     * @OnlyCurrentDoc
     */
    
    /**
     * The event handler triggered when editing the spreadsheet.
     * @param {Event} e The onEdit event.
     */
    function onEdit(e) {
      const cellsToCopyFromTop = "A1:C1"; ///<--- update these if you want to include more columns
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const logSheet= ss.getSheetByName('LogResults');
    
      //test to see if cell B1 matches value of last entry 
        if(logSheet.getRange("B1").getValue() !=
           logSheet.getRange(logSheet.getLastRow(),2).getValue()){
          var newValues = logSheet.getRange(cellsToCopyFromTop).getValues();
          logSheet.getRange(logSheet.getLastRow()+1,1,newValues.length,newValues[0].length).setValues(newValues);  
        }
    }
    
    /**
    *@OnlyCurrentDoc
    */
    /**
    *编辑电子表格时触发事件处理程序。
    *@param{Event}删除onEdit事件。
    */
    功能OneEdit(e){
    
    const cellsToCopyFromTop=“A1:C1”//是的,您可以获得更新值的触发器。下面的代码应该可以工作,我制作了。如果您复制了它,您可以在查看时拥有自己的版本

    你可能想

    下面的代码可能适用于我认为您正在寻找的内容(请记住这是堆栈溢出,所以我们对牛市和熊市不太了解,甚至对运动队也不太了解)。这将在C5中的值发生更改时在日志表上写入新行。请注意,这是使用基于B1单元格中LoggedResults表中公式中链接值的公式比较。如果您使用自己的版本,我认为可能更有意义

    /**
     * @OnlyCurrentDoc
     */
    
    /**
     * The event handler triggered when editing the spreadsheet.
     * @param {Event} e The onEdit event.
     */
    function onEdit(e) {
      const cellsToCopyFromTop = "A1:C1"; ///<--- update these if you want to include more columns
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const logSheet= ss.getSheetByName('LogResults');
    
      //test to see if cell B1 matches value of last entry 
        if(logSheet.getRange("B1").getValue() !=
           logSheet.getRange(logSheet.getLastRow(),2).getValue()){
          var newValues = logSheet.getRange(cellsToCopyFromTop).getValues();
          logSheet.getRange(logSheet.getLastRow()+1,1,newValues.length,newValues[0].length).setValues(newValues);  
        }
    }
    
    /**
    *@OnlyCurrentDoc
    */
    /**
    *编辑电子表格时触发事件处理程序。
    *@param{Event}删除onEdit事件。
    */
    功能OneEdit(e){
    
    const cellsToCopyFromTop=“A1:C1”///编号
    编号<代码>​您好,非常感谢您的回复和努力!我真的很感激!我复制了您的电子表格并玩了它,我无法让它工作,但这可能是我的错。在“结果”表中,我用打字机和Boink输入了各种文本,我希望这些文本被复制到“LogResults”中但它没有发生。我遗漏了什么?哦……没关系!我现在让它工作了!我只是误解了它的工作原理……我想当我将B5单元格改为空白时,它会复制它!我在我的帖子中添加了一些问题的答案。HI@mancoder.StackoverFlow有一些非常严格的标准,你不应该将问题作为答案发布。Addi通常,在给出答案后再问一些不相关的问题会被认为是一种不好的形式。我知道这对你来说都是新鲜事,所以不用担心,但如果你能接受我的答案(点击复选框),我将不胜感激。抱歉。我现在接受了你的问题:-)非常感谢你的帮助和回答我的后续问题!你好,非常感谢你的回答和努力!我真的很感激!我复制了你的电子表格并摆弄了它,我无法让它工作,但这可能是我的错。在“结果”表中我用打字机和Boink输入了各种文本,我希望这些文本能被复制到“LogResults”但它没有发生。我遗漏了什么?哦……没关系!我现在让它工作了!我只是误解了它的工作原理……我想当我将B5单元格改为空白时,它会复制它!我在我的帖子中添加了一些问题的答案。HI@mancoder.StackoverFlow有一些非常严格的标准,你不应该将问题作为答案发布。Addi通常,在给出答案后再问一些不相关的问题会被认为是一种不好的形式。我知道这对你来说都是新鲜事,所以不用担心,但如果你能接受我的答案(点击复选框),我将不胜感激.很抱歉。我现在接受了你的问题:-)非常感谢你的帮助和回答我的后续问题!