使用 Google 表格中的单个公式从范围创建动态排序和过滤列表
Posted
技术标签:
【中文标题】使用 Google 表格中的单个公式从范围创建动态排序和过滤列表【英文标题】:Creating a dynamically sorted and filtered list from a range using a single formula in Google Sheets 【发布时间】:2020-04-19 01:19:47 【问题描述】:我正在尝试做类似这个问题的事情:Google sheets using Filter and Sort together
我有一个包含两列的输入范围,作为输出,我想使用单个公式从输入范围创建一个动态排序和过滤的列表。
查看此文档以获得所需的结果:https://docs.google.com/spreadsheets/d/109xcbORFZxTjH0Vjd6PVqYlOxMIdK7aXqf5-jnMMPik/edit?usp=sharing
我尝试了公式:=SORT(FILTER(B11:C100, B11:B100 = or(I11,I12,I13,I14)), 2, 0)
,但它不起作用。我在这里做错了什么?非常感谢任何帮助。
【问题讨论】:
【参考方案1】:尝试:
=ARRAYFORMULA(QUERY(B11:C,
"where lower(B) matches '"&TEXTJOIN("|", 1, LOWER(I11:I))&"'
order by C desc", 0))
【讨论】:
感谢@player0 的优雅解决方案——我看到QUERY 功能非常强大。我已使用您的解决方案更新了 Google 表格。 问题:如果我只想渲染第一列(在我们的示例中是具有字符名称的列,而不是具有频率的列),需要对公式进行哪些修改?跨度> 试试:=ARRAYFORMULA(QUERY(B11:B, "where lower(B) matches '"&TEXTJOIN("|", 1, LOWER(I11:I))&"'", 0))
确定:=ARRAYFORMULA(QUERY(B11:C, "select B where lower(B) matches '"&TEXTJOIN("|", 1, LOWER(I11:I))&"' order by C desc", 0))
试试:developers.google.com/chart/interactive/docs/querylanguage【参考方案2】:
你可以修改 or(,,,,) 如下:
=SORT(
FILTER(B11:C100,
((B11:B100 = I11)*1+(B11:B100 = I12)*1+(B11:B100 = I13)*1+(B11:B100 = I14)*1)>0
)
, 2, 0
)
【讨论】:
谢谢!请参阅@player0 使用 QUERY 的解决方案以上是关于使用 Google 表格中的单个公式从范围创建动态排序和过滤列表的主要内容,如果未能解决你的问题,请参考以下文章
计算工作天数的公式,但不包括Google表格中的重叠天数或部分重叠天数