【发布时间】:2020-06-26 12:01:47
【问题描述】:
-- EDIT #2 -- 再次更新了 Google 表格,使用了一个非常接近的解决方案。到目前为止,我拥有的最佳配方如下。 --
=ARRAYFORMULA(SPLIT(UNIQUE({ARRAYFORMULA(QUERY(IF(COUNTIF(G4:G&"|||"&H4:H,ARRAYFORMULA(A4:A&"|||"&B4:B))>0,REGEXREPLACE(A4:A&"|||"&B4:B,".*",""),A4:A&"|||"&B4:B),"SELECT * WHERE Col1 IS NOT NULL"));ARRAYFORMULA(QUERY(IF(COUNTIF(G4:G&"|||"&H4:H,ARRAYFORMULA(D4:D&"|||"&E4:E))>0,REGEXREPLACE(D4:D&"|||"&E4:E,".*",""),D4:D&"|||"&E4:E),"SELECT * WHERE Col1 IS NOT NULL"))}),"|||"))
-- 编辑 -- 更新了 Google 表格以更准确地反映我的用例 --
非常有信心以前有人问过这个问题,但我已经在谷歌上搜索了几个小时,而且我开始掉头发了。我想我必须使用 QUERY 函数,但不是 100%。
演示表在这里: https://docs.google.com/spreadsheets/d/1p_hqk9WydcyXQZT4bIm4DSZZnaPKbngtnZ0-laYHwk8/edit?usp=sharing
我想做的事: 我想合并 DATA 1 和 DATA 2 下的范围,但我想排除以 DATA 3 中的值开头的行。
RESULT 1 没有增加价值,但显示了我是如何将 DATA 1 和 DATA 2 加在一起的。
RESULT 2 显示了我想要得到的结果。
RESULT 3 隐藏但我到达了(并且不会再次增加价值,抱歉)。我可以让它大部分工作,但我必须在查询中手动指定我正在寻找哪些组合......坦率地说,我的数据集是巨大的。该公式目前如下所示:
=QUERY(UNIQUE({FILTER(A4:B,NOT(ISBLANK(A4:A)));FILTER(D4:E,NOT(ISBLANK(D4:D)))}),"SELECT * WHERE NOT Col1 STARTS WITH 'a' OR NOT Col2 STARTS WITH 'v'",-1)
希望有人可以帮助我!你是我唯一的希望。
【问题讨论】:
-
用 Apps 脚本编写的自定义函数是否适合您?
-
我总是热衷于尽可能坚持使用公式,但如果它使解决方案变得更容易,我非常乐意使用 Apps Script。一般来说,感觉很舒服。
-
我有一个部分解决方案,但它并不完全在那里。不过,我的 COUNTIF 中的通配符效果不佳。有没有人对此有解决方案? =ARRAYFORMULA(SPLIT(UNIQUE({ARRAYFORMULA(QUERY(IF(COUNTIF(G4:G&"|||"&H4:H,ARRAYFORMULA(A4:A&"|||"&B4:B)))>0,REGEXREPLACE(A4: A&"|||"&B4:B,".*",""),A4:A&"|||"&B4:B),"SELECT * WHERE Col1 IS NOT NULL"));ARRAYFORMULA(QUERY(IF( COUNTIF(G4:G&"|||"&H4:H,ARRAYFORMULA(D4:D&"|||"&E4:E))>0,REGEXREPLACE(D4:D&"|||"&E4:E,".*" ,""),D4:D&"|||"&E4:E),"SELECT * WHERE Col1 IS NOT NULL"))}),"|||"))
标签: google-sheets google-sheets-formula google-sheets-query