![如何在 Excel 中将日期映射到某个日期范围?](https://linux22.com/image/1540143/%E5%A6%82%E4%BD%95%E5%9C%A8%20Excel%20%E4%B8%AD%E5%B0%86%E6%97%A5%E6%9C%9F%E6%98%A0%E5%B0%84%E5%88%B0%E6%9F%90%E4%B8%AA%E6%97%A5%E6%9C%9F%E8%8C%83%E5%9B%B4%EF%BC%9F.png)
我在 Excel 中有 2 张表。
一个字段有日期字段。
例如 A-1 Date1
第二张表上有一个带有 ID 的日期范围。
A-1 开始日期 A2- 结束日期 A3-日期范围 ID
我需要在第一张表上创建一个包含 Date1 的范围 ID 的新字段。
例如在第二张表上我有范围 A1-2017 年 5 月 1 日 A2-2017 年 5 月 30 日 A3-7
在第一张工作表 A1-May 3 2017 上。所以我想在第一张工作表上添加一个新列,其值为 7。
我如何在 Excel 中执行此操作?
答案1
正如@Ron Rosenfeld 所说,如果 Sheet2 中的范围包含 Sheet1 中的所有日期并且没有重叠,则简单的 VLOOKUP 应该可以工作。但是,如果 Sheet2 中的日期范围不一定按升序排列,并且中间有间隙并且可能重叠。请尝试此解决方案。限制是它将返回 Sheet1 中的数据在范围内的日期范围的第一个范围 ID。
在此示例中,Sheet1 在 A1:A10 列中输入日期。Sheet2 在 A1:A7 中输入开始日期,在 B1:B7 中输入结束日期,在 C1:C7 中输入范围 ID。
在 Sheet1 单元格 B1 中输入以下数组公式。
=IF(ISERROR(INDEX(Sheet2!$C$1:$C$7,MATCH(1,IF(A1>=Sheet2!$A$1:$A$7,IF(A1<=Sheet2!$B$1:$B$7,1,0)),0))),"Not Found",INDEX(Sheet2!$C$1:$C$7,MATCH(1,IF(A1>=Sheet2!$A$1:$A$7,IF(A1<=Sheet2!$B$1:$B$7,1,0)),0)))
之后按 CTRL+SHIFT+ENTER 键使其成为数组公式。现在您将在地址栏中看到用花括号括起来的公式。现在将其向下拖动到所需的行。现在,B 列将从 Sheet2 中获取 A 列中的日期所在的范围内的相应范围 ID。
该公式基于检查嵌套的 IF,根据匹配范围返回 TRUE、FALSE 数组,并使用外部 INDEX-MATCH 获取匹配 1 的第一个位置并从范围 ID 列返回该位置的值。