我已将数据按月分为不同的工作表,例如2019年1月,2019年2月,依此类推。
当前,我创建了多个数据透视表来分析特定月份的数据,然后复制并粘贴以供后续月份使用,从而沿途创建新工作表。
我想创建一个工作表来分析基于月份的数据,是否可以为所有数据透视表添加过滤器选项,以便我可以即时查看所选月份的数据?
答案 0 :(得分:0)
通过使用INDIRECT()
,您可以从单独的工作表中构建一个范围,并使用该范围来选择要查看的工作表以进行进一步分析。可以将其放在由数据验证形成的下拉菜单下。您可以手动输入此工作表列表,也可以使用脚本为您抓取所有列表名称。因此,最后,您将拥有一种动态数据透视表/查询表或所需的任何内容。
=INDIRECT(cell-with-dropdown-menu&"!range-you-want")
示例:
=QUERY({INDIRECT(A1&"!A1:Z")}, "select * where Col1 contains '@', 0)"
这是一个脚本(如果您有兴趣的话)以及一些公式来控制它
=SHEET(2)
-从左侧返回第二张纸的名称=SHEET(1, TODAY())
-从左侧返回第一张工作表的名称,公式应每天更新=SHEETLIST()
-返回工作表名称和编号的列表(也可以与TODAY()一起使用)function SHEET(input) {
try {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets() ;
if( (input>0) && (input <= sheets.length)) return sheets[(input-1)].getName() ;
else return "invalid sheet #" ;
}
catch( err ) {
return "#ERROR!"
}
}
function SHEETLIST() {
try {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
var out = new Array( sheets.length+1 ) ;
out[0] = [ "NAME" , "#GID" ];
for (var i = 1 ; i < sheets.length+1 ; i++ ) out[i] =
[sheets[i-1].getName() , sheets[i-1].getSheetId() ];
return out
}
catch( err ) {
return "#ERROR!"
}
}