我正在尝试使用多组复选框来过滤数据来确定标准。
这是我正在处理的电子表格。以下是每张纸的一些注释:
如有任何帮助,我们将不胜感激!
我目前正在尝试 xmatch 函数,它适用于一组复选框(下面是我尝试过的公式)。然而,尝试使用一组单独的复选框范围应用第二个 xmath 函数时,一切都会变得不稳定并计算不应该的东西。
=sort(filter(History!A:Z,History!B:B >= Dashboard!C4, History!B:B <= Dashboard!C5, xmatch(History!T:T,filter(Dashboard!O8:O57,Dashboard!N8:N57) )),2, true)
这是我尝试使用多个的公式
=sort(filter(History!A:Z,History!B:B >= Dashboard!C4, History!B:B <= Dashboard!C5, xmatch(History!A:A,filter(Dashboard!F4:F5,Dashboard!E4:E5), xmatch(History!Z:Z,filter(Dashboard!I4:I6,Dashboard!H4:H6) )),2, true)
在看到示例文件的设置后,我想建议为过滤器功能添加另一个按钮,因为我意识到检查/取消选中复选框并填写结束日期和开始日期需要一些时间(这使得对于这种情况,简单的触发器效率较低)。您可以为此使用以下脚本:
function filter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var shFilter = ss.getSheetByName("Dashboard");
var startDate = shFilter.getRange("C4").getValue();
var endDate = shFilter.getRange("C5").getValue();
var selectVersion = shFilter.getRange("E4:F5").getValues().filter(x => x[0]).map(y => y[1]);
var selectNetwork = shFilter.getRange("H4:I6").getValues().filter(x => x[0]).map(y => y[1]);
var selectAudience = shFilter.getRange("K4:L10").getValues().filter(x => x[0]).map(y => y[1]);
var selectStates = shFilter.getRange("N8:O57").getValues().filter(x => x[0]).map(y => y[1]);
var rawData = ss.getSheetByName("History").getDataRange().getValues();
var out = rawData.filter(a => (a[1] >= startDate) * (a[1] <= endDate) * (selectVersion.includes(a[0])) * (selectNetwork.includes(a[25])) * (selectAudience.includes(a[22])) * (selectStates.includes(a[19])))
var shOut = ss.getSheetByName("List");
shOut.getRange(2, 1, shOut.getLastRow() - 1, shOut.getLastColumn()).clearContent();
ss.getSheetByName("List").getRange(2, 1, out.length, out[0].length).setValues(out);
}
注意: 我很想在这篇文章中显示输出,但我认为您提供的示例数据包含敏感信息。