2017-06-14 142 views
0

我有一个数据透视表,总计(总计列包含单词“总”)。谷歌表筛选不匹配的范围大小

我想用这些数据做更多的处理,所以我创建了一个新表单。新的第一板具有

= ARRAYFORMULA( '透视表分钟' A:B)

抓住前两列。

但是,然后我想要“导入”只是在他们有总词的列。

因此,我创建:

=FILTER('Sheet'!A:X,MMULT(REGEXMATCH('Sheet'!A:X,"Total"),ROW(INDIRECT("a1:a"&COLUMNS('Sheet'!A:X)))^0)) 

例如如果数据透视表数据跨越列A到Z,但只有列D & F具有关键字“总计”,我只想“导入”这些列。

但是我收到一条错误消息:FILTER具有不匹配的范围大小。预计行数:1250.列数:1.实际行数:1,列数:1.

我读过,它可能是范围不匹配,但我有所有范围匹配。

备注:两张纸中共有1242行。

回答

0
function onOpen() { 
SpreadsheetApp.getActiveSpreadsheet().addMenu(
    'Copy Data', [ 
     { name: 'Copy', functionName: 'copyTotalColumns' }, 
     ]); 
} 

function copyTotalColumns() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet() 
    var s=ss.getSheetByName("Sheet") 
    var s1=ss.getSheetByName("Sheet2") 
    var lastColumn = s.getLastColumn(); 
    var lastRow= s.getLastRow() 
    var startCol=3 //column to start total rows 
    var data = s.getRange(1,1,1,lastColumn).getValues();//get headers 
    for(var i=0;i<data[0].length;i++){ 
    if(data[0][i]=="Total"){ 
     var copyFrom=s.getRange(2, i+1, lastRow,1).getValues()//get total column 
     var copyTo=s1.getRange(2, startCol,  
lastRow,1).setValues(copyFrom)//set total column on new sheet 
     startCol=startCol+1 //index column 
} 
    }} 
+0

它们中包含单词“总计”的列不断更改,因此无法指定某些列。 –

+0

@Brittany Greve请参阅修改后的答案。 –

+0

在Google表格中,我会执行此操作吗?我正在寻找最有效的方法,因为此表将与多个用户一起使用。谢谢。 –