首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回Google列中最长的连续日期序列

返回Google列中最长的连续日期序列
EN

Stack Overflow用户
提问于 2022-08-10 07:54:53
回答 2查看 78关注 0票数 1

我有一个Google Sheet文件,其数据如下所示:

这是一个列有日期。我正在试图找到一个单细胞公式,它能够计算本专栏中连续几天最长的连续时间。

我试过去找,但找不到。我想这需要一个复杂的查询/数组公式组合。

我可以在虚拟列的帮助下做到这一点,但这是一个交互式仪表板,所以我想保持它尽可能干净。我希望这有道理..。

下面是一个包含示例数据和首选结果的文档:https://docs.google.com/spreadsheets/d/14h241HNpgqq8T5cizR8UPF0NgUSm_kBb6RWpnnPSQLc/edit?usp=sharing

任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

发布于 2022-08-10 16:42:20

我的工作基础是您可以使用here的想法,但这并不像我最初想的那样简单,因为在日期列表中没有空白,您只是从一系列日期跳转到下一个日期。但是,我认为您仍然可以使用频率,类似这样的:

代码语言:javascript
运行
复制
=ArrayFormula(frequency(if(countif(A5:A23,A5:A23-1),row(A5:A23)),if(countif(A5:A23,A5:A23-1)=0,row(A5:A23))))

因此,我在每条条纹的开头加上一个零,如下所示:

频率是这样出来的:

正如您所看到的,每个频率计数都比与之相关的条纹长度少一个。这是因为我使用“0”作为频率的bin范围,因此在每个组中丢失了一个数据点。我认为只需在每个组中增加1就可以得到实际的条纹长度,所以我建议的最大条纹长度公式是:

代码语言:javascript
运行
复制
=ArrayFormula(max(frequency(if(countif(A5:A,A5:A-1),row(A5:A)),if(countif(A5:A,A5:A-1)=0,row(A5:A)))+1))

由于组的数目比零的数目多一个,所以最近的连列是由以下方法提供的:

代码语言:javascript
运行
复制
=ArrayFormula(index(frequency(if(countif(A5:A,A5:A-1),row(A5:A)),if(countif(A5:A,A5:A-1)=0,row(A5:A)))+1,countifs(countif(A5:A,A5:A-1),0,A5:A,"<>")+1))

待办

我认为走到这一步,我应该能够开始和结束最长和最近的连胜。

票数 0
EN

Stack Overflow用户

发布于 2022-08-10 19:06:52

尝试:

代码语言:javascript
运行
复制
=INDEX(COLUMNS(SPLIT(FLATTEN(SPLIT(TRIM(QUERY(
 IF(A5:A-A6:A=-1, 1, 0),,9^9)), " 0 ", )), " "))+1)

备选方案:

代码语言:javascript
运行
复制
=ARRAYFORMULA(MAX(LEN(SUBSTITUTE(FLATTEN(SPLIT(QUERY(IF(
 FILTER(A5:A-A6:A, A5:A<>"")=-1, "♦", "♦×"),,9^9), "×")), " ", ))))

代码语言:javascript
运行
复制
=ARRAYFORMULA(REGEXEXTRACT(QUERY(LEN(SUBSTITUTE(FLATTEN(SPLIT(QUERY(IF(
 FILTER(A5:A-A6:A, A5:A<>"")=-1, "♦", "♦×"),,9^9), "×")), " ", )),,9^9), "\d+$")*1)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73302673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档