【问题标题】:Excel formula, Mapping dates to a bucketExcel 公式,将日期映射到存储桶
【发布时间】:2022-01-04 02:56:29
【问题描述】:

我正在尝试将日期映射到数字

因此,如果日期在 (photo2) A 列中的这几个月之间,那么公式将分配第 2 列中的内容,超过这些数字的任何内容都将分配为“6”。

我正在尝试使用Vlookup,但不确定如何使用,因为日期不准确。

我的“数据映射表”:

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| |01/11/2022|2| |01/12/2022|2| |01/13/2022|2|

【问题讨论】:

    标签: excel formula


    【解决方案1】:

    你在正确的轨道上,VLOOKUP 和一个完全匹配。
    您只需将示例日期转换为月末日期即可使匹配生效。
    Excel函数是EOMONTH:

    =VLOOKUP(EOMONTH(D2,0),$A$2:$B$13,2)
    

    如果表格是这样的,上面的表格会出现在单元格 E2 中:

    处理任何“超出范围”的日期
    以上涵盖了示例日期映射日期范围内的所有情况。
    为了满足“超出范围”的条件,需要替代方法:

    =IF(ISNUMBER(MATCH(EOMONTH(D2,0),$A$1:$A$13,0)),VLOOKUP(EOMONTH(D2,0),$A$1:$B$13,2),"Out of range")
    

    如果表格是这样的,上面的表格会出现在单元格 E2 中:

    上面首先使用ISNUMBERMATCH(精确)测试月末日期是否存在于映射表日期中。
    a) 如果是这样:它与之前的方法相同(使用VLOOKUP
    b) 如果不是:返回字符串Out of range
    您当然可以将 Out of range 返回值更改为您喜欢的任何值。

    处理“超出范围”的特定日期
    最后:如果您只想将特定日期视为超出范围(根据您的“大于 2026 年 10 月”的评论),可以这样做:

    =IF(D2>DATEVALUE("31 Oct 2026"),8,VLOOKUP(EOMONTH(D2,0),$A$1:$B$13,2))
    

    注意事项
    a) 我使用日期格式 (dd mmm yyyy) 以避免系统本地日期格式引起的任何混淆或问题。
    b) 您当然可以将out of range 返回(当前为8)更改为您喜欢的任何值。

    【讨论】:

    • 似乎无法让它工作,什么是 EOM?试试这个=VLOOKUP(EOMONTH((F2),0),Sheet1!D:E,2,FALSE)
    • 是的,我有一个 EOM 的 UDF(我忘了那是我的一个)。请参阅上面编辑的解决方案(现在正确)。
    • 列必须是一种格式吗?仍然不适用
    • 正如发布的那样,这是可行的。该图像是实际工作表的快照,其中包含正在运行的公式。要使其按原样工作,日期必须是日期。寻求的价值可以是任何东西。如果系统中的日期是文本的(不是日期本身),则需要调整公式。是吗?
    • 为此添加了两个替代解决方案。
    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2022-09-30
    • 2012-09-09
    相关资源
    最近更新 更多