Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 创建宏以将一系列单元格复制并粘贴到下一个可用空白单元格中_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 创建宏以将一系列单元格复制并粘贴到下一个可用空白单元格中

Google apps script 创建宏以将一系列单元格复制并粘贴到下一个可用空白单元格中,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我对宏非常陌生-如果我自己这么说的话,我是excel的天才哈哈哈,但以前从未做过宏和脚本编写,基本上我有两张工作表,一张是安排工作,另一张是告诉制造业哪些工作需要制造,根据明细表中的特定单元格,使用筛选公式自动填充切割表 我想做的是创建一个按钮,我们只需单击它,新的一周将出现在“日程安排”选项卡中,然后在“剪切工作表”选项卡中,但当我录制宏时,它只是复制并粘贴到相同的单元格中,我不知道如何让它复制并粘贴到前一周的下方,我已附加了工作表。。我希望我做得对 有人能告诉我如何录制宏,以便它复制和粘贴前

我对宏非常陌生-如果我自己这么说的话,我是excel的天才哈哈哈,但以前从未做过宏和脚本编写,基本上我有两张工作表,一张是安排工作,另一张是告诉制造业哪些工作需要制造,根据明细表中的特定单元格,使用筛选公式自动填充切割表

我想做的是创建一个按钮,我们只需单击它,新的一周将出现在“日程安排”选项卡中,然后在“剪切工作表”选项卡中,但当我录制宏时,它只是复制并粘贴到相同的单元格中,我不知道如何让它复制并粘贴到前一周的下方,我已附加了工作表。。我希望我做得对

有人能告诉我如何录制宏,以便它复制和粘贴前一周的行:)


这是非常基本的,但我发现我能够录制一个宏,它似乎可以实现您想要的功能。我刚刚完成了切割工作表,但同样的逻辑应该适用于进度表

宏/脚本如下所示:

function AddWeekCuttingSheet() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Cutting Sheet'), true);
  spreadsheet.getRange('A2').activate();
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).activate();
  spreadsheet.getActiveSheet().insertRowsAfter(spreadsheet.getActiveRange().getLastRow(), 1);
  spreadsheet.getActiveRange().offset(spreadsheet.getActiveRange().getNumRows(), 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRange('2:84').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};
如果您使用工具>脚本编辑器,并粘贴到上面的脚本中,请根据需要重命名它,然后保存-它应该可以作为宏从meu栏中运行。它可能需要首次授权。先做一份测试表的副本。为了简化测试,在剪切表中,您可以删除第85行或更高的行(第2周及以上),但这不是必需的

宏转到“剪切板材”,转到A列,然后转到最后一个数据单元,添加一个空行,然后将第2行的内容粘贴到该位置的第84行


我相信有更好的解决方案,其他人可能会提出,但这可能在某种程度上对您有所帮助。

重复增加排程和切割表的周数(在底部?)的目的是什么?你希望这张表中有一年的数据吗?由于每周有许多公式,随着工作表的增长,性能可能会成为一个问题。每个标签一周,或者每个标签一个月,是否可能更有效?复制标签以增加一周或一个月是很简单的。有了一个良好的命名约定,输入或来自所有选项卡的数据都可以很容易地自动化,只要结构相同。我还相信,您的许多公式都可以整合,使用GoogleSheets中ArrayFormulas的强大功能,这可能有助于提高性能和可维护性。不过,如果这里的一些专家也这么建议的话,我会让他们说出来。嗨,谢谢你的评论,我们需要将切割表放在同一个选项卡上,并且每次都有6个月的数据,这是为了看看我们是否有任何重复的工作被制造出来。我发现,只有当切割片都在同一个选项卡上时才可能发生这种情况,为了使过滤器能够准确地工作,它所过滤的信息需要在同一个选项卡上。。。你觉得这样对吗?我希望我有耐心添加数组公式,但这已经花了很长时间了哈哈哈,我不知道我有精力!!嗯,我想看一份你的工作表,里面有很多样本数据。我敢肯定,你可以有一个汇总表,可以很容易地在你所有的标签上找到任何重复的内容,特别是因为它们都有相同的结构。但我理解,当你投入了大量时间后,你会对改变产生抵触情绪。我只是有一种感觉,当你在这张表中添加六个月的数据时,你可能会遇到这个设计的问题。祝你好运。老实说,我想你知道一个更好的方法,我很想听听,这需要大量的谷歌搜索来找到不同的公式,大量的尝试和错误,试图找出最好的方法来做它。。。这就是我所能想到的,你在google sheets上明显比我先进得多,所以如果你有任何建议,我很想听听。。。我毫不怀疑,一旦我们真正开始在业务中使用它,我会发现许多需要更改/修复的内容。请注意,由于切割表O3中的日期公式,这在复制时不起作用。第一周的参考日期在上面两行,而其他周的参考日期在上面83行。您可以编辑宏以将第85行复制到第167行(而不是第2行到第84行),也可以将O3中的公式替换为以下公式,该公式根据该单元格的行号计算日期。Try:=$O$1+(行()+80)/83+2在单元格O3或O86或O169中。。。这也适用于宏。非常感谢-当我周一回来工作的时候,我会试试它!!!当新的一周到来的时候,我就把星期一的日期设为=星期五的日期+3,那么这个公式就是在每一个星期一创建的。。。如果这有道理的话-对不起,我有时不擅长解释事情!!