查找某个值,具体取决于另一日期位于哪一组日期之间

查找某个值,具体取决于另一日期位于哪一组日期之间

如果这是重复的,请原谅 - 如果您能指出任何现有答案的方向,那就太好了。

我在 Excel 中有一组日期范围,每个日期范围都有某种标签。例如

LabelA  01/01/10  31/01/10
LabelB  01/02/10  28/02/10
LabelC  01/03/10  31/03/10

如果我有另一个日期,我想查找与该日期所属日期范围相关的标签。例如,对于 15/02/10,我想返回 LabelB。我知道日期范围不会重叠,尽管一个日期的结束日期和下一个日期的开始日期之间可能会有差距。

答案1

您可以通过创建一个数组公式来实现,该公式将每个日期范围与所需日期进行比较。如果日期在范围内,则返回结束日期。

然后根据这个结束日期进行匹配,找到适当的行。

这一切都可以根据需要在单个单元中完成。

如果数据在 A1:C3 中,而所需日期在 B4 中,则此公式:

=INDEX(A1:A3,MATCH(SUM(IF(B1:B3<B4,1,0)*IF(C1:C3>=B4,C1:C3,0)),C1:C3,0))

应该可以实现您想要的效果。这需要以数组公式的形式输入。

如果日期不在任何范围内,它将返回#N/A

答案2

您能否在右侧添加(可能隐藏)列 A 的重复项(或移动列 A)并且日期是否按顺序排列?

如果是这样,VLOOKUP 函数可能就是答案。它在第一列中查找一个值,然后查看多列。这里就是一个例子。

我意识到这可能是一种不太好的方法,但它很容易,只要数据有序,就应该能给你想要的东西。

答案3

您可以使用 进行多条件求和sumproduct。您可以使用(假设 Date1 是 B:B,Date2 是 C:C,E1 是您要查找的日期)

sumproduct(--(B1:B50<=E1),--(C1:C50>=E1),Row(B1:B50))

这将为您提供行号,因为此多重条件总和仅在 E1 >= B 且 <= C 时才为真,并将对所有为真的行的行号进行求和(您说最多为 1)。然后要查找标签,您可以:

index(A1:A50,sumproduct(--(B1:B50<=E1),--(C1:C50>=E1),Row(B1:B50)))

此外,如果您认为您的号码可能处于某个差距中,您可以这样做:

if(sumproduct(--(B1:B50<=E1),--(C1:C50>=E1),Row(B1:B50))=0,"Date Not Found",index(A1:A50,sumproduct(--(B1:B50<=E1),--(C1:C50>=E1),Row(B1:B50))))

答案4

对我来说这听起来正是条件格式是为创建而创建的。您可以为一个单元格或单元格区域设置最多 3 个不同的条件,当其中一个条件匹配时,单元格将获得该条件所应用的格式。

许多“交通灯”类型的电子表格都是这样制作的。

相关内容