【问题标题】:Excel Formula to Check for Overlaps in Day and Time用于检查日期和时间重叠的 Excel 公式
【发布时间】:2021-08-19 04:37:58
【问题描述】:

我正在为每周的课程表构建一个 Excel 电子表格。人们在 3 列中输入以下格式的时间表:“[day] [starttime] [endtime]”

例子:

no. day start time end time
1 MTh 7:00 AM 9:00 AM
2 TF 7:00 AM 9:00 AM
3 M 8:30 AM 9:30 AM

在本例中,我希望 Excel 突出显示第 1 行和第 3 行,因为它们在星期一有时间重叠

我正在寻找一个也可以放入条件格式的公式。

到目前为止,我只能突出显示时间重叠,但没有考虑这一天。我在下面使用了 SUMPRODUCT 公式:

=SUMPRODUCT((M15<$N$15:$N$26)*(N15>$M$15:$M$26))>1

其中 M15 是开始时间,N15 是结束时间。 N列范围指所有结束时间,M列范围指所有开始时间

我想尽可能使用 Excel 公式并避免任何 VB 脚本。但是,如果仅使用公式是不可能的,我愿意接受建议。谢谢!

【问题讨论】:

  • 第 1 行是周一和周四,第 2 行是周二和周五,第 3 行是周一吗?如果是这种情况,拆分日子可能会有点问题 - “T”是星期二,除非它后面跟着一个“h”,而忽略“h”,除非它前面有一个“T”。周六和周日也有吗?
  • 嗨@DarrenBartrup-Cook。抱歉,我忘记了那个细节,但是是的,第 1 行的时间表是每周一和周四。我制作了另一个帮助列,将“Th”转换为“H”以避免与“星期二”混淆,并将其全部设为单个字符:“M、T、W、H、F、S”。包括星期六,但不包括星期日。
  • 问题在Super User重复。

标签: excel excel-formula spreadsheet


【解决方案1】:

Link/截图参考:

条件格式之外

=(B2:B7<=G2)*(C2:C7>=G1)*(A2:A7=G3)

在条件格式 GUI 中:

第 1 步 - 公式构造:

=($B2<=$G$2)*($C2>=$G$1)*($A2=$G$3)

第 2 步 - 在所需范围内应用:

直截了当的步骤:


备注

  • 注意 - sumproduct 是多余的/不必要的(我发现这通常是这种情况,并且 sum 通常与 sumproduct 一样有效,就像我在此处介绍的方法/功能“上一级”一样)

  • 如果对“外部”和“内部”条件格式框架有一个共同的公式是目标的核心,那么在这两种情况下都使用“内部”公式(并简单地向下拖动到所需的“外部”范围)

  • 主要区别(外部与内部条件格式):

  • 外部:公式包含其适用的“条件”和“范围”(因此,利用数组,无需使用“项目符号”(即 $ 符号)“修复”单元格引用)

  • 在:这里,为特定单元格构造公式(通常使用左上角相对于应应用它的连续块很方便);第二步在指定范围内“应用”此条件。后果包括:数组通常不会出现在公式构造“步骤”中;和项目符号引用可能与下一步的成功“申请”相关

  • 奖励:虽然您提到已经有一个“转换”表:日期名称/标签参考(即 M = Mon、S=Sat 等),请查看我使用的确定此列表的方法在单个单元格内(提供适当排序的时间表,它可能对此/相关应用程序有用)

  • ="("&CHOOSE(MATCH(G3,A2:A7,0),"Mon","Tue","Wed","Thu","Fri","Sat")&")"

【讨论】:

  • 请问附加列 F 和 G 有什么用?我看到它在公式中被引用。
  • F&G:根据我在开头行中提供的链接 - 这仅引用“开始”和“结束”时间 - 我相信这些在 OP 版本中被称为 M15 和 N15 “M15是开始时间,N15 是结束时间”。在我的测试过程中,我为不同的时间/日期创建了验证列表 - 这些对于解决方案来说不是必需的 - OP 可以根据需要替换为 M15 和 N15。
【解决方案2】:

你可以用这个不方便的

需要通过CTRLSHIFTENTER确认的数组公式。

=SUMPRODUCT((MMULT((LEN(SUBSTITUTE($L$15:$L$24,"Th","H"))-LEN(SUBSTITUTE(SUBSTITUTE($L$15:$L$24,"Th","H"),$K$1:$P$1,"")))*(ROW($K$15:$K$24)<>ROW()),TRANSPOSE(LEN(SUBSTITUTE(L15,"Th","H"))-LEN(SUBSTITUTE(SUBSTITUTE(L15,"Th","H"),$K$1:$P$1,"")))))*(N15>$M$15:$M$24)*(M15<$N$15:$N$24))>0

您目前需要将M T W H F S 放入单元格K1P1

1 MTh 7:00 AM 9:00 AM TRUE
2 TFS 7:00 AM 9:00 AM TRUE
3 M 8:30 AM 9:30 AM TRUE
4 T 10:00 AM 11:00 AM FALSE
5 MS 8:30 AM 11:00 AM TRUE
6 WH 1:00 PM 2:00 PM FALSE
7 MWHFS 12:00 AM 1:00 PM TRUE
8 H 2:00 PM 3:00 PM FALSE
9 MW 11:00 AM 1:00 PM TRUE
10 H 4:00 PM 5:00 PM FALSE

它不能用于条件格式,因为它是一个数组公式,但您可以对公式的结果使用条件格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    相关资源
    最近更新 更多