2016-09-16 67 views
0

查询功能在谷歌工作表我有这个疑问:通过区域对象作为参数,在谷歌工作表

= QUERY(Data!A1:M300, "select A,B,C,D where C <= date '" & TEXT(B1, "yyyy-MM-dd") & "' AND D >= date '" & TEXT(B1, "yyyy-MM-dd") & "'", 0) 

我想现在要做的是使查询函数的第一个参数的动态。为此,我写了这个小功能:

function getDataRange(sheetName) { 

    if (sheetName == "") { 
    sheetName = SpreadsheetApp.getActiveSheet().getName() 
    } 

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName) 

    if (sheet != null) { 

    output = sheet.getDataRange().getValues(); 

    } else { 

    output = SpreadsheetApp.getActiveSpreadsheet().getDataRange().getValues(); 

    } 

    return output 

} 

现在,如果我通过这个函数作为第一个参数,这样的查询

= QUERY(getDataRange("Data"), "select A,B,C,D where C <= date '" & TEXT(B1, "yyyy-MM-dd") & "' AND D >= date '" & TEXT(B1, "yyyy-MM-dd") & "'", 0) 

我得到这个错误

"Unable to parse query string for Function QUERY parameter 2: NO_COLUMN: A" 

我没有找到了一种将动态范围传递给QUERY函数的第一个参数,我非常感谢任何提示。

+1

试着改变你选择子句: “选择Col1中,Col2中,COL3,COL4其中COL3 <=日期“” &TEXT(B1,“YYYY-MM- dd“)&”'AND Col3> = date'“&TEXT(B1,”yyyy-MM-dd“)&”'“ – JPV

+0

谢谢!这个伎俩。 – Georg

+0

我在上面添加了这个线程的未来访问者的答案。随时接受或upvote它。干杯,JP – JPV

回答

0

试着改变你选择子句:

"select Col1, Col2, Col3, Col4 where Col3 <= date '" & TEXT(B1, "yyyy-MM-dd") & "' AND Col3 >= date '" & TEXT(B1, "yyyy-MM-dd") & "'"