按ID匹配行,并从指定日期之前最接近日期的行中返回一个值

时间:2018-08-12 00:58:48

标签: google-sheets excel-formula spreadsheet

我正在使用Google表格,下图所示的数据集1包括ID,日期和值。该数据集包含许多行,这些行具有一些重复的ID,但针对它们的日期不同。 Dataset 1

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

1 个答案:

答案 0 :(得分:0)

为了清晰和维护起见,我分两个步骤进行操作。从理论上讲,它应该如sql with dates所述在一处可行。我也提到过dates with qoogle query,在那儿可能会发现一些简化。在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和计算出的日期相匹配的项的值。

那是你的目标。