首页 > 解决方案 > 按 ID 匹配行并从指定日期之前最接近日期的行返回一个值

问题描述

我正在使用 Google 表格,数据集 1 如下图所示,其中包括 ID、日期、值。该数据集有许多行,其中有一些重复的 ID,但它们的日期不同。 数据集 1

然后我有 ID、日期、空列的数据集 2。我希望能够使用与行 ID 匹配的数据集 1 中的值填充空列,但是从数据集 2 中特定日期之前的最接近日期的行中提取。(希望我已经解释得足够好) . 附上几张图片供参考。任何帮助将不胜感激! 数据集 2

标签: google-sheetsexcel-formulaspreadsheet

解决方案


为了清晰和维护,我分两步执行此操作。从理论上讲,它应该是可行的,如sql with dates所述。我还提到了 qoogle 查询的日期,看看那里可能会发现简化。在 Dataset2 表上,我添加了 D 列,如果您愿意,以后可以将其隐藏,我将第一个表命名为 Dataset1。在 D2 中,我放置了以下公式,然后将其向下拖动。

=iferror(index(query(Dataset1!$A$2:$C$11,"select  MAX(B) where A='"&A2&"' AND B<Date'"&TEXT(DATEVALUE(C2),"yyyy-mm-dd")&"'"),2),"")

iferror 可以防止找不到任何东西的情况,例如您的示例中 ID 2 的情况。索引 2,简单地挑选出查询结果,而不是标题“Max”。当您进入查询时,您可以看到它查看您的原始数据,并找到 id 匹配的最大日期,并且 Dataset1 日期小于该行的 Dataset2 中的日期。现在,一旦您有了所需的日期(我假设只有一个条目对应于该日期,否则您需要处理它),您可以在 B2 中再次查询(并将其也向下拖动)

=iferror(query(Dataset1!$A$2:$C$11,"select  C where A='"&A2&"' AND B=Date'"&TEXT(DATEVALUE(D2),"yyyy-mm-dd")&"'"))

iferror 也是出于同样的原因(为了避免空的日期格式错误消息),现在我们选择与我们计算的 ID 和日期匹配的项目的值。

这就是你的目标。


推荐阅读