google-sheets - 按 ID 匹配行并从指定日期之前最接近日期的行返回一个值
问题描述
我正在使用 Google 表格,数据集 1 如下图所示,其中包括 ID、日期、值。该数据集有许多行,其中有一些重复的 ID,但它们的日期不同。 数据集 1
然后我有 ID、日期、空列的数据集 2。我希望能够使用与行 ID 匹配的数据集 1 中的值填充空列,但是从数据集 2 中特定日期之前的最接近日期的行中提取。(希望我已经解释得足够好) . 附上几张图片供参考。任何帮助将不胜感激! 数据集 2
解决方案
为了清晰和维护,我分两步执行此操作。从理论上讲,它应该是可行的,如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 和日期匹配的项目的值。
这就是你的目标。
推荐阅读
- javascript - 如何使用组件和 v-bind:class 过滤 Vue 中的帖子
- javascript - 在节点脚本标签内运行 cat ?
- angular - 如何使用模板驱动形式将角度路由与角度材料步进器(https://material.angular.io/components/stepper/overview)结合起来?
- python - 如何根据列名python pandas删除列
- python - 我的 django 网站启动后如何在后台运行功能?
- memory - 我们如何比较不同云服务提供商的服务并决定哪一个最适合我们公司?
- python-3.x - 查找大型准周期阵列中的所有正向零交叉点
- c++ - 在 C++ 中使用排序列表查找最小值
- c# - 即使几乎完全相同的代码在脚本的不同部分工作,也会出现错误
- javascript - React Hooks:在上下文 API 中存储的值发生更改后渲染组件?