【问题标题】:Match Rows By ID and return a value from the row with the closest date before a specified date按 ID 匹配行并从指定日期之前最接近日期的行返回一个值
【发布时间】:2018-08-12 00:58:47
【问题描述】:

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

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

【问题讨论】:

    标签: google-sheets excel-formula spreadsheet


    【解决方案1】:

    为了清晰和维护,我分两步执行此操作。从理论上讲,它应该是可行的,如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 和日期匹配的项目的值。

    这就是你的目标。

    【讨论】:

    • 感谢杰里米。效果很好!
    • 优秀。如果您不介意,请接受答案(您应该可以点击复选标记)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多