如何在 Google Sheets 中使用 arrayformula 计算非相邻数据读数之间的天数

问题描述 投票:0回答:1

大约每周一次,我从多个单位中获取数据计数。计数与日期和单位#一起记录,并重置为零。为了确定干预期间的计数/天,我需要确定该特定单位上次读数的日期:

日期 单位# 数据 其他数据 上次阅读日期
9/21/23 1 0
9/21/23 2 0
9/21/23 3 0
9/22/23 1 其他数据
9/27/23 3 其他数据
9/28/23 1 114 9/21/23
9/28/23 3 157 9/21/23
10/1/23 全部 其他数据
10/4/23 1 其他数据
10/4/23 3 其他数据
10/5/23 2 110 9/21/23
10/5/23 3 112 9/28/23
10/6/23 全部 其他数据
10/12/23 1 130 9/28/23
10/12/23 2 62 10/5/23
10/12/23 3 139 10/5/23

顺便说一句。日期总是在增加,并且数据中散布着可以忽略的读数(因此,大概与问题无关,但显示上下文)。

我可以使用 INDEX、FILTER 和 COUNTIFS 查找“之前的日期”: INDEX(FILTER(B$2:B2,D$2:D2<>"", C$2:C2=C2),COUNTIFS(C$2:C2,"="&C2,D$2:D2,"<>"&"" )-1,1) 但我需要将此公式复制到每一行,并且更喜欢使用 ARRAYFORMULA,但 INDEX 和 COUNTIFS 都不适用于 ARRAYFORMULA。

google-sheets array-formulas
1个回答
0
投票

对于你的例子,我设法用这个公式获得了预期的结果:

=map(A2:A17,B2:B17,D2:D17,lambda(date,unit,otherData, iferror(let(filtered_data,filter(indirect("$A$2:$A$"&row(date)),indirect("$C$2:$C$"&row(date))<>"",indirect("$B$2:$B$"&row(date))=unit,indirect("$A$2:$A$"&row(date))<>date),if(otherData="",index(filtered_data,counta(filtered_data)),"")),"")))

显然,您可以扩展地图公式中的输入以满足您的需要。

我想指出,这个公式仅适用于递增的日期。

如果出现问题或您需要更多详细信息,请告诉我:)

安托万

© www.soinside.com 2019 - 2024. All rights reserved.