使用 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 表格中的单个公式从范围创建动态排序和过滤列表的主要内容,如果未能解决你的问题,请参考以下文章

HLOOKUP评估Google表格中的超出范围错误

将单元格链接到多个单元格不包括Google表格中的中间范围

如何根据excel电子表格中的指向值在公式中制作动态单元格

计算工作天数的公式,但不包括Google表格中的重叠天数或部分重叠天数

如何使用 Google Apps 脚本将公式添加到 Google 表格?

Google 表格:我可以删除公式中范围的最后一个条目吗?