2017-06-18 18 views
1

我正在寻找让宏按特定顺序在工作表上执行某些步骤。我们都在上面处理2个标签,但在这里,具体地说,它就是我希望它在这个顺序做:试图获取宏以特定顺序在Google工作表上执行步骤

“LM控制表” TAB:

  • 副本K列
  • 插入到柱K个
  • 右侧一列
  • 粘贴值仅到L列

业大“任务1” TAB

  • 删除在A2:B42数据,A44:B79A81:B124A126:B158

基本上,我需要做的是在这个顺序,因为K1有日期的公式是依赖于无论是在L1,所以基本上,现在例如,K1的公式产生6/17/17 - 6/20/17

实际上存在的公式实际上是根据L1包含的日期范围添加了3天,当前为6/14/17 - 6/17/17。我不希望宏在KL之间插入一列的原因是因为新列L将为空白,并且K1中的公式将产生日期"1/2/00 - 1/2/00"

如果K复制然而FIRST,并THEN粘贴值到L,它将6/17/17 - 6/20/17粘贴到新的L,因此改变K1(现6/20/17 - 6/23/17)的值。

所以是的,这基本上是我期待得到这个宏做的。宏我最初被给予它没有秩序,但如下

function myMacro() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var POSht = ss.getSheetByName('LM Control Sheet'); 
    var PORng = POSht.getDataRange(); 
    var ASht = ss.getSheetByName('Task1'); 

    POSht.insertColumnAfter(11); 
    var KRng = POSht.getRange(1,11,PORng.getHeight(),1); 
    var LRng = POSht.getRange(1,12,PORng.getHeight(),1); 

    KRng.copyTo(LRng, {contentsOnly:true}); 
    ASht.getRange('A2:B42').clearContent(); 
    ASht.getRange('A44:B79').clearContent(); 
    ASht.getRange('A81:B124').clearContent(); 
    ASht.getRange('A126:B158').clearContent(); 
    SpreadsheetApp.flush(); 
} 

所以任何帮助扭转,这将是非常棒的。谢谢,麻烦您了!

+0

您可以分享指向电子表格的链接吗? – Cooper

+0

我想我不知道如何在位置11(K)之后插入一列而不会搞乱你的公式。也许别人可以在这里帮忙。 – Cooper

+0

https://docs.google.com/spreadsheets/d/14y35UAt1ELaK25oP6P9tLaM0BdkiGL3bARg5mfGxXzs/edit#gid=14521621 –

回答

0

感谢您的电子表格访问。我能够看到你描述的问题。我认为你对宏的修改是你正在寻找的。

function myMacro() 
{ 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var POSht = ss.getSheetByName('LM Control Sheet'); 
var PORng = POSht.getDataRange(); 
var ASht = ss.getSheetByName('Task1'); 

var KRng = POSht.getRange(1,11,PORng.getHeight(),1); 
var KRngA = KRng.getValues();//save values before inserting new column 
POSht.insertColumnAfter(11); 
var LRng = POSht.getRange(1,12,PORng.getHeight(),1);//get range for copying values 
LRng.setValues(KRngA);//insert old values from K into the new column 

ASht.getRange('A2:B42').clearContent(); 
ASht.getRange('A44:B79').clearContent(); 
ASht.getRange('A81:B124').clearContent(); 
ASht.getRange('A126:B158').clearContent(); 
SpreadsheetApp.flush(); 
} 
+0

谢谢。这是完美的。我现在在该表上有更多的自动化。非常感谢您的帮助! –