我正在尝试创建多个相关下拉列表来过滤 Google 表格中的数据集。
“Rate Filter Basic”选项卡按我预期的方式工作,无需创建 ArrayFunction 来复制下拉列表。
“费率表”选项卡是我要过滤的数据源。
“Rate Filter Adv”选项卡是我尝试创建一个 ArrayFormula 的地方,它将自动填充下拉列表的更深层次。我了解到并非所有函数都允许我在其中嵌套 ArrayFormula 或 AND OR 子句。
带有“”的选项卡是我为每个列表重建下拉数据的地方。 “付款”有一个突出显示的cel,上面不应该出现“NEXO”。
我遇到麻烦的地方是“付款”下拉列表,这取决于前 2 个(服务、令牌)。在“Rate Filter Adv”选项卡上,cel D5 结果应该只有“In-Kind”。非实物和 NEXO。
我对解决这个问题的全新方法持开放态度。
我正在尽我所能。目前正在研究 QUERY,但我也在研究 ArrayFormula、AND、OR 等方面的限制。
演示表
https://docs.google.com/spreadsheets/d/1rcWYgNeAXE8mEb43m0Jf50cQ9U9ntA0yd8znXAi5kMU/edit?usp=sharing
谢谢。
答案 0 :(得分:0)
这是一个提案https://docs.google.com/spreadsheets/d/17b0FoUHM5lAOcdeWnzxrGm6ErqYxWlfggcNDsKt8yHQ/edit?usp=sharing 公式示例
=transpose(unique(query('Rate Table'!A$4:D,"select D where A='"& 'Rate Filter Adv'!B4 &"' AND B='"& 'Rate Filter Adv'!C4 &"' AND C='"& 'Rate Filter Adv'!D4 &"' ")))
在 C 或 D 列应用新值时,您可以使用 onEdit 删除其他值
function onEdit(event){
var sh = event.source.getActiveSheet();
var rg = event.source.getActiveRange();
if (sh.getName()=='Rate Filter Adv'){
var c = rg.getColumn();
var r = rg.getRow();
if (c==4){sh.getRange(r,c+1).setValue('')}
if (c==3){
sh.getRange(r,c+1).setValue('')
sh.getRange(r,c+2).setValue('')
}
}
}