FILTER()中的范围大小不匹配

时间:2017-06-14 16:43:58

标签: filter google-sheets google-sheets-query

我有一个信息透视表,总计(总计列包含单词" Total"),我想进一步处理。我创建了一个新工作表并使用

=ARRAYFORMULA('Pivot Table mins'!A:B)

抓住前两列。

但是我想"导入"只有具有单词" Total"的列。在他们中间,所以我创造了:

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

e.g。如果数据透视表数据跨越A到Z列,但只有D和D列。 F有关键字" Total",我只想"导入"那些专栏。

但是我收到一条错误消息:

  

FILTER的范围大小不匹配。预期行数:1250。列数:1。实际行数:1,列数:1。

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

旁注:两张纸都有1242行。

1 个答案:

答案 0 :(得分: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
 }
  }}