嗨,我是新来的,正在研究谷歌电子表格查询功能来做一些工作。这是我正在处理的示例文件 https://docs.google.com/spreadsheets/d/1gpnZ2XmZbPaZVjMa734dXLHJmydnAG_YXW7V_LBXGRU/edit?usp=sharing
第一个选项卡"All_data"包含不断增长的数据列表。我做了第二个选项卡"最近",以相反的顺序从All_data中提取最近的 200 行。作为练习,我只是玩第一列。首先,我能够使用此代码拉取最近的 200 行=query(All_data!A2:A,"offset "&(counta(All_data!A2:A)-200),0)
然后我在互联网上发现=SORT(Range_to_sort, ROW(values_in_order), false)
可以颠倒范围的顺序。当我尝试仅使用纯文本范围("最近"选项卡的 B 列(时,该排序有效 - 实际上我不确定它是如何工作的。我认为 row(values_in_order( 应该只返回一个值,因为它不是数组公式。但不知何故,它有效。
无论如何,当我尝试像=row(query(All_data!A2:A,"offset "&(counta(All_data!A2:A)-200),0))
一样将查询绑定到行时,它返回 #NA 而不是值。最终,我想做的是=sort(query(All_data!A2:A,"offset "&(counta(All_data!A2:A)-200),0), row(query(All_data!A2:A,"offset "&(counta(All_data!A2:A)-200),0)),false)
任何建议都会有所帮助。
谢谢。
哇。 反转列的技巧对我来说是新的。 不知道它是如何工作的。 但是,如果您只是想避免对范围 A2:A200 进行硬编码,我可以使用 INDIRECT 进行工作。
=sort(indirect("A2:A"&counta(A2:A)+1),row(indirect("A2:A"&counta(A2:A)+1)),false)
因此,如果您有一个帮助程序列(A 列(返回查询结果,然后此公式反转排序顺序,无论您有多少个值,这将起作用。 但是,如果您总是要有 200 条记录,那么您当前的公式已经在这样做了。
我现在单独完成了这个答案,因为我的另一个答案可能仍然有用。
请参阅工作表中的"最近-GK"选项卡以获取工作结果。
阅读排序语法解释了反向的工作原理。你只是给出了一个数字列表 - ROW(A2:A5( 给出 2,3,4,5 - 用于排序顺序。 并且对排序顺序使用反向标志,使其向后排序。
所以我们不需要担心查询结果的范围,我们只需要知道范围的长度。 然后我们可以使用任何虚拟列与排序的 ROW(range( 部分一起使用。 如果您知道查询将始终返回 200 条记录,则可以执行以下操作:
=SORT(QUERY(All_data!A2:A,"OFFSET "&(COUNTA(All_data!A2:A)-200),0),ROW(A1:A200),FALSE)
如果可能无法获得 200 条记录,您可以将查询结果返回到临时帮助器列中,执行 COUNTA 来计算记录,然后使用间接的答案来调整 ROW(范围( 以匹配记录数。
让我知道这是否有帮助。