我正在尝试创建一个Google表,以便在一个应用程序或游戏引擎中引用,它将只显示最近的15个条目。关于更多的上下文,我创建了一个带有连接到工作表的表单的网站。游戏中将有一个变量分配给表格的单元格。由于这个原因,我想保留相同的15个单元格,但是当新条目提交时,它们中的信息会更新和更改。
因此,在第16项,第一行将自动替换为该信息。第17栏将取代第2排..。第31条将再次取代第1条等因此,我希望将行数限制在15行,并且总是按顺序替换当前的条目。
网页上的信息:
我对编码相当陌生,我的搜索也没有多大成效。所有的帮助将是非常感谢,即使它的链接到更长的书籍或教程,我可能需要。
发布于 2021-11-02 15:03:02
好吧,鉴于你的补充意见..。
首先,添加一个新的工作表(例如,Sheet2)。
在新工作表的单元格A1中,放置以下公式:
=ArrayFormula({Sheet1!B1; QUERY(QUERY({ROW(Sheet1!B2:B),ARRAY_CONSTRAIN(FLATTEN(TRANSPOSE(SPLIT(REPT(SEQUENCE(15)&"~",ROUNDUP(ROWS(Sheet1!B2:B)/15)),"~",1,1))),ROWS(Sheet1!B2:B),1),Sheet1!B2:B},"Select Col2, Col3 WHERE Col3 Is Not Null ORDER BY Col1 Desc LIMIT 15"),"Select Col2 ORDER BY Col1")})
ArrayFormula(...)
意味着将考虑和处理整个范围。
最外层的花括号{ }
形成一个虚拟数组,由您的Col-B头以及您想要的结果组成。虚拟数组中的分号意味着“将下一部分放在下面”(即将结果放在标题下)。
其余的公式起“魔法”的作用。
很难详细解释这个魔术,但本质上是这样的。
实际上,形成了三列。
ROW
!B2:B的Sheet1数字。SEQUENCE
。整个公式部分是形成重复序列( ARRAY_CONSTRAIN(FLATTEN(TRANSPOSE(SPLIT(REPT(SEQUENCE(15)&"~",ROUNDUP(ROWS(B2:B)/15)),"~",1,1))),ROWS(B2:B),1)
)所必需的,它只在外部ArrayFormula(...)
包装中起作用。最内部的QUERY
清除了该三列虚拟数组中尚未存在数据的所有行,按行号对剩余的结果进行反向排序,去掉第一行号列(随后不再需要),并将LIMIT
s返回到15行。
这现在将底部的15个条目保留在一个两列数组中:第一列是那些重复SEQUENCE
数字1-15的条目,从上述QUERY
在适当位置的截止点开始。例如,这一顺序可能是:
10、9、8、7、6、5、4、3、2、1、15、14、13、12、11
最外层的QUERY
ORDER
s将这些数字去掉,然后去掉第一列的数字(这也不再需要).
..。只按要求的顺序保留数据(至少如果我清楚地理解了您的最终目标)。
https://webapps.stackexchange.com/questions/159949
复制相似问题