在 excel 中,我想将一个日期(比如说 A1 列)与矩阵 A2:F9 中的日期列表进行比较,并报告它是否是“假日”。我在矩阵中列出了所有假日,其中年份列在左行,假日列在顶列。下面的第一组是所有日期。我确实要到 2050 年。第二组是矩阵,我只显示部分假日。但我想比较,比如说第一组中的第一个日期“2018 年 4 月 27 日”,在假日下,通过输入“是”或“假日”来注释它是否在下面的第二组中
Date day month year Holiday
4/27/2018 Fri Apr 2018 ??
4/28/2018 Sat Apr 2018
4/29/2018 Sun Apr 2018
4/30/2018 Mon Apr 2018
5/1/2018 Tue May 2018
New Years Day Martin Luther King Jr. Presidents Day
2018 1/1/2018 1/20/2018 2/19/2018
2019 1/1/2019 1/18/2019 2/18/2019
2020 1/1/2020 1/17/2020 2/17/2020
2021 1/1/2021 1/16/2021 2/15/2021
2022 1/1/2022 1/15/2022 2/21/2022
答案1
答案2
答案3
这是一个使用应该在 Excel 2007 中运行的旧函数的解决方案(我实际上在使用 LO Calc,它可以在那里运行)。
您要求仅显示“是”或“假日”。此解决方案显示实际假日。如果您只想要一般参考,公式会更简单一些。
E2 中的公式(复制到该列)是:
=IFERROR(INDEX($H$1:$J$1,1,MATCH(A2,INDIRECT("H"&MATCH(D2,$G$2:$G$6,1)+1&":J"&MATCH(D2,$G$2:$G$6,1)+1),0)),"")
我将从内到外进行解释。
MATCH(D2,$G$2:$G$6,1)
这将在假日矩阵中找到年份的行。该行与矩阵的范围有关,数据从第 2 行开始,因此我们需要在该行上加 1 以获得工作表中的实际行。
INDIRECT("H"&MATCH(D2,$G$2:$G$6,1)+1&":J"&MATCH(D2,$G$2:$G$6,1)+1)
INDIRECT 函数会构建对您查找日期的范围的引用。对于 2018 年,这将产生一个范围 H2:J2(根据实际范围调整公式)。为了便于阅读,我将在下面的解释中将上面的公式称为 INDIRECT()。
MATCH(A2,INDIRECT(),0)
Match 随后会在该范围内查找 A2 中日期所在的列。如果未找到该日期(即不是假日),则会生成错误。
如果您只想要一个通用结果,您可以停在那里并将其包装在 IF 测试中以检查错误情况(错误 = 无假期,非错误结果 = 假期),并显示您选择的任一结果的措辞。
INDEX($H$1:$J$1,1,MATCH(A2,INDIRECT(),0))
这将查找包含节日名称的顶行中已识别的列。为了便于阅读,我将在下面的解释中将其称为 INDEX()。
IFERROR(INDEX(),"")
这会将结果包装在 IFERROR 函数中,如果不是假日,则隐藏错误消息。