Excel 公式,将日期映射到存储桶
Excel formula, Mapping dates to a bucket
我正在尝试将日期映射到数字
因此,如果日期介于 (photo2) A 列中的这些月份之间,则公式将在第 2 列中分配什么,并且这些数字之上的任何内容都将分配为“6”。
我正在尝试使用 Vlookup
但不确定如何使用,因为日期不准确。
我的'Data Mapping Table':
Mapping Dates
Data
11/30/2021
1
12/31/2021
2
01/31/2022
2
02/28/2022
3
03/31/2022
3
04/30/2022
3
05/31/2022
4
06/30/2022
4
07/31/2022
4
08/31/2022
5
09/30/2022
5
10/31/2022
5
样本日期和寻求的输出:
|样本日期|数据|
|--------|--------|
|11/02/2021|1|
|11/30/2021|1|
|12/01/2021|2|
|12/06/2021|2|
|12/15/2021|2|
|12/17/2021|2|
|12/31/2021|2|
|12/31/2021|2|
|12/31/2021|2|
|12/31/2021|2|
|2022 年 1 月 11 日|2|
|01/12/2022|2|
|2022 年 1 月 13 日|2|
您走在正确的轨道上并且 VLOOKUP
和完全匹配。
您只需将样本日期转换为月末日期即可使匹配生效。
Excel 函数是 EOMONTH
:
=VLOOKUP(EOMONTH(D2,0),$A:$B,2)
如果 table 是这样的话,上面的内容就是单元格 E2 的样子:
处理任何 'out of range'
的日期
以上涵盖了 样本日期 在 映射日期 .
范围内的所有情况
为了满足 'Out of Range' 条件,需要替代方法:
=IF(ISNUMBER(MATCH(EOMONTH(D2,0),$A:$A,0)),VLOOKUP(EOMONTH(D2,0),$A:$B,2),"Out of range")
如果 table 是这样的话,上面的内容就是单元格 E2 的样子:
上面首先使用 ISNUMBER
和 MATCH
(精确)测试月末日期是否存在于映射 table 日期中。
a)如果是这样:它与以前的方法相同(使用VLOOKUP
)
b) 如果不是:它return是字符串Out of range
您当然可以将 Out of range
return 值更改为任何您喜欢的值。
处理特定日期'out of range'
最后:如果你只想将特定日期视为超出范围(根据你的 'greater than Oct 2026' 评论),这样做就可以了:
=IF(D2>DATEVALUE("31 Oct 2026"),8,VLOOKUP(EOMONTH(D2,0),$A:$B,2))
备注
a) 我正在使用日期格式 (dd mmm yyyy
) 以避免系统本地日期格式引起的任何混淆或问题。
b) 您当然可以将 out of range
return(当前 8
)更改为您喜欢的任何内容。
我正在尝试将日期映射到数字
因此,如果日期介于 (photo2) A 列中的这些月份之间,则公式将在第 2 列中分配什么,并且这些数字之上的任何内容都将分配为“6”。
我正在尝试使用 Vlookup
但不确定如何使用,因为日期不准确。
我的'Data Mapping Table':
Mapping Dates | Data |
---|---|
11/30/2021 | 1 |
12/31/2021 | 2 |
01/31/2022 | 2 |
02/28/2022 | 3 |
03/31/2022 | 3 |
04/30/2022 | 3 |
05/31/2022 | 4 |
06/30/2022 | 4 |
07/31/2022 | 4 |
08/31/2022 | 5 |
09/30/2022 | 5 |
10/31/2022 | 5 |
样本日期和寻求的输出:
|样本日期|数据|
|--------|--------|
|11/02/2021|1|
|11/30/2021|1|
|12/01/2021|2|
|12/06/2021|2|
|12/15/2021|2|
|12/17/2021|2|
|12/31/2021|2|
|12/31/2021|2|
|12/31/2021|2|
|12/31/2021|2|
|2022 年 1 月 11 日|2|
|01/12/2022|2|
|2022 年 1 月 13 日|2|
您走在正确的轨道上并且 VLOOKUP
和完全匹配。
您只需将样本日期转换为月末日期即可使匹配生效。
Excel 函数是 EOMONTH
:
=VLOOKUP(EOMONTH(D2,0),$A:$B,2)
如果 table 是这样的话,上面的内容就是单元格 E2 的样子:
处理任何 'out of range'
的日期
以上涵盖了 样本日期 在 映射日期 .
范围内的所有情况
为了满足 'Out of Range' 条件,需要替代方法:
=IF(ISNUMBER(MATCH(EOMONTH(D2,0),$A:$A,0)),VLOOKUP(EOMONTH(D2,0),$A:$B,2),"Out of range")
如果 table 是这样的话,上面的内容就是单元格 E2 的样子:
上面首先使用 ISNUMBER
和 MATCH
(精确)测试月末日期是否存在于映射 table 日期中。
a)如果是这样:它与以前的方法相同(使用VLOOKUP
)
b) 如果不是:它return是字符串Out of range
您当然可以将 Out of range
return 值更改为任何您喜欢的值。
处理特定日期'out of range'
最后:如果你只想将特定日期视为超出范围(根据你的 'greater than Oct 2026' 评论),这样做就可以了:
=IF(D2>DATEVALUE("31 Oct 2026"),8,VLOOKUP(EOMONTH(D2,0),$A:$B,2))
备注
a) 我正在使用日期格式 (dd mmm yyyy
) 以避免系统本地日期格式引起的任何混淆或问题。
b) 您当然可以将 out of range
return(当前 8
)更改为您喜欢的任何内容。