有时间使用excel的事件的条件格式

我正在尝试build立一个class级日程安排,class级名称是课程开始时间和结束时间。 我必须确定课程是不同的(不是2个会计课程)

会计| MW | 上午10:30 | 11:50 AM

经济学| MW | 上午11:00 | 12:30 PM < – 这需要格式化(高亮,粗体等),以警告与前一课程重叠

英文| T | 上午10:30 | 11:50 AM < – 不需要格式化,因为发生在不同的一天

哲学| W | 10:45上午12:15 <—这需要格式化,因为它重叠了第一道菜。

这是我到目前为止:IF(K64 = K65,AND(L64 <= M65,L65 <= F65) M64), “OK”))}

公式检​​查是否重复课程的名称,如果它显示“不是唯一的”,如果不是,则检查是否date相同。 如果日子是一样的,那么它会检查时间是否重叠,如果不是那么它说“好”。 我不知道如何检查重复的日子,当一门课程其MW和另一门课程只有W(仍然重叠)我如何检查所有课程的重叠,而不是一次2。 谢谢

谢谢

我们可以像这样分解你的问题:

  1. “课程的名称不止一次出现?” =IF(COUNTIF($B$62:$B$65,B62)>1,"not unique","OK") – 不是数组公式,需要复制到每一行。
  2. “其他时间是否重复”

    2A。 “开始时间是否在任何课程的开始和结束时间之间? =COUNTIFS($C$62:$C$66,"<"&C62,$D$62:$D$66,">"&C62) – 不是数组公式,需要复制到每一行。

    2B。 是否开始和结束时间之间的任何课程结束时间?“ =COUNTIFS($C$62:$C$66,"<"&D62,$D$62:$D$66,">"&D62) – 不是一个数组公式,需要复制到每一行。

  3. “任何一天都出现在其他线路上”。

    这是最复杂的一个,因为“Accounting | MW | 10:30 AM | 11:50 AM”实际上代表了两个单独的发生! 创build一个单独的工作表,将您的问题中描述的数据复制到每日一行的格式将会更好。 然后使用该表来检测冲突(使用“日=日”+“时间重叠”)。 如果这可能是一个可以接受的解决scheme(即有一张额外的表),让我知道,我可以进一步build议。

    另一个select是使用正则expression式来回答一个问题:“这个string中的任何字符(即date首字母)是否出现在其他任何行中”。 我build议你通过安装MOREFUNC插件 (见底部的说明)并使用下面的公式来做到这一点: =REGEX.COMP(B63,"["&$B$62&"]") 。 这个expression式基本上是这么说的:“方括号中的任何字符(单元格B62的内容)是否出现在单元格B63中?”

    注意 :星期二和星期四是如何区分的? 我假设星期二= T和星期四= H(或其他单字母缩写)。 如果使用双字母缩写:TOUGH! 发现 – 取代他们是一个字母!

    下面的解决scheme使用morefunc addon中的REGEX.COMP()函数


BASIC EXAMPLES – 第62行的结果 – 显示

  ABCDEFGHIJ ________________________________________________________________________________________________________ 61 || does start time does end time time overlaps? any of the time overlaps do day and time match overlap with overlap with days match? AND days match Row 62? Row 62? 62 || Accounting MW 10:30 AM 11:50 AM 63 || Economics MW 11:00 AM 12:30 PM FALSE TRUE TRUE TRUE TRUE TRUE 64 || English T 10:30 AM 11:50 AM FALSE FALSE FALSE FALSE FALSE FALSE 65 || Philosophy W 10:45 AM 12:15 PM FALSE TRUE TRUE TRUE TRUE TRUE 66 || OtherCourse F 11:00 AM 11:50 AM FALSE FALSE FALSE FALSE FALSE FALSE 

BASIC EXAMPLES – 第62行的结果 – 公式(时间显示为数字)

  ABCDEFGHIJ ________________________________________________________________________________________________________ 62 || Accounting MW 0.4375 0.49305 63 || Economics MW 0.4583 0.52083 =IF(AND($C$62>C63,$C$62<D63),TRUE,FALSE) =IF(AND($D$62>C63,$D$62<D63),TRUE,FALSE) =OR(E63,F63) =REGEX.COMP(B63,"["&$B$62&"]") =AND(G63,H63) =AND(OR(IF(AND($C$62>C63,$C$62<D63),TRUE,FALSE),IF(AND($D$62>C63,$D$62<D63),TRUE,FALSE)),REGEX.COMP(B63,"["&$B$62&"]")) 64 || English T 0.4375 0.49305 =IF(AND($C$62>C64,$C$62<D64),TRUE,FALSE) =IF(AND($D$62>C64,$D$62<D64),TRUE,FALSE) =OR(E64,F64) =REGEX.COMP(B64,"["&$B$62&"]") =AND(G64,H64) =AND(OR(IF(AND($C$62>C64,$C$62<D64),TRUE,FALSE),IF(AND($D$62>C64,$D$62<D64),TRUE,FALSE)),REGEX.COMP(B64,"["&$B$62&"]")) 65 || Philosophy W 0.4479 0.51041 =IF(AND($C$62>C65,$C$62<D65),TRUE,FALSE) =IF(AND($D$62>C65,$D$62<D65),TRUE,FALSE) =OR(E65,F65) =REGEX.COMP(B65,"["&$B$62&"]") =AND(G65,H65) =AND(OR(IF(AND($C$62>C65,$C$62<D65),TRUE,FALSE),IF(AND($D$62>C65,$D$62<D65),TRUE,FALSE)),REGEX.COMP(B65,"["&$B$62&"]")) 66 || OtherCourse F 0.4583 0.49305 =IF(AND($C$62>C66,$C$62<D66),TRUE,FALSE) =IF(AND($D$62>C66,$D$62<D66),TRUE,FALSE) =OR(E66,F66) =REGEX.COMP(B66,"["&$B$62&"]") =AND(G66,H66) =AND(OR(IF(AND($C$62>C66,$C$62<D66),TRUE,FALSE),IF(AND($D$62>C66,$D$62<D66),TRUE,FALSE)),REGEX.COMP(B66,"["&$B$62&"]")) 

最终解决scheme – 对所有行都有效。 – 显示

  ABCDEFGHIJ ________________________________________________________________________________________________________ 62 || Accounting MW 10:30 AM 11:50 AM TRUE 63 || Economics MW 11:00 AM 12:30 PM TRUE 64 || English T 10:30 AM 11:50 AM FALSE 65 || Philosophy W 10:45 AM 12:15 PM TRUE 66 || OtherCourse F 11:00 AM 11:50 AM FALSE 

最终解决scheme – 对所有行都有效。 – 公式

  ABCDEFGHIJ ________________________________________________________________________________________________________ 62 || Accounting MW 10:30 AM 11:50 AM "=OR( AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$62,INDIRECT(ADDRESS(ROW(),3))<$D$62),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$62,INDIRECT(ADDRESS(ROW(),4))<$D$62),TRUE,FALSE)),REGEX.COMP($B$62,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$63,INDIRECT(ADDRESS(ROW(),3))<$D$63),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$63,INDIRECT(ADDRESS(ROW(),4))<$D$63),TRUE,FALSE)),REGEX.COMP($B$63,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$64,INDIRECT(ADDRESS(ROW(),3))<$D$64),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$64,INDIRECT(ADDRESS(ROW(),4))<$D$64),TRUE,FALSE)),REGEX.COMP($B$64,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$65,INDIRECT(ADDRESS(ROW(),3))<$D$65),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$65,INDIRECT(ADDRESS(ROW(),4))<$D$65),TRUE,FALSE)),REGEX.COMP($B$65,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$66,INDIRECT(ADDRESS(ROW(),3))<$D$66),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$66,INDIRECT(ADDRESS(ROW(),4))<$D$66),TRUE,FALSE)),REGEX.COMP($B$66,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")) )" 63 || Economics MW 11:00 AM 12:30 PM "=OR( AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$62,INDIRECT(ADDRESS(ROW(),3))<$D$62),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$62,INDIRECT(ADDRESS(ROW(),4))<$D$62),TRUE,FALSE)),REGEX.COMP($B$62,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$63,INDIRECT(ADDRESS(ROW(),3))<$D$63),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$63,INDIRECT(ADDRESS(ROW(),4))<$D$63),TRUE,FALSE)),REGEX.COMP($B$63,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$64,INDIRECT(ADDRESS(ROW(),3))<$D$64),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$64,INDIRECT(ADDRESS(ROW(),4))<$D$64),TRUE,FALSE)),REGEX.COMP($B$64,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$65,INDIRECT(ADDRESS(ROW(),3))<$D$65),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$65,INDIRECT(ADDRESS(ROW(),4))<$D$65),TRUE,FALSE)),REGEX.COMP($B$65,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$66,INDIRECT(ADDRESS(ROW(),3))<$D$66),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$66,INDIRECT(ADDRESS(ROW(),4))<$D$66),TRUE,FALSE)),REGEX.COMP($B$66,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")) )" 64 || English T 10:30 AM 11:50 AM "=OR( AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$62,INDIRECT(ADDRESS(ROW(),3))<$D$62),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$62,INDIRECT(ADDRESS(ROW(),4))<$D$62),TRUE,FALSE)),REGEX.COMP($B$62,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$63,INDIRECT(ADDRESS(ROW(),3))<$D$63),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$63,INDIRECT(ADDRESS(ROW(),4))<$D$63),TRUE,FALSE)),REGEX.COMP($B$63,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$64,INDIRECT(ADDRESS(ROW(),3))<$D$64),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$64,INDIRECT(ADDRESS(ROW(),4))<$D$64),TRUE,FALSE)),REGEX.COMP($B$64,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$65,INDIRECT(ADDRESS(ROW(),3))<$D$65),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$65,INDIRECT(ADDRESS(ROW(),4))<$D$65),TRUE,FALSE)),REGEX.COMP($B$65,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$66,INDIRECT(ADDRESS(ROW(),3))<$D$66),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$66,INDIRECT(ADDRESS(ROW(),4))<$D$66),TRUE,FALSE)),REGEX.COMP($B$66,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")) )" 65 || Philosophy W 10:45 AM 12:15 PM "=OR( AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$62,INDIRECT(ADDRESS(ROW(),3))<$D$62),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$62,INDIRECT(ADDRESS(ROW(),4))<$D$62),TRUE,FALSE)),REGEX.COMP($B$62,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$63,INDIRECT(ADDRESS(ROW(),3))<$D$63),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$63,INDIRECT(ADDRESS(ROW(),4))<$D$63),TRUE,FALSE)),REGEX.COMP($B$63,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$64,INDIRECT(ADDRESS(ROW(),3))<$D$64),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$64,INDIRECT(ADDRESS(ROW(),4))<$D$64),TRUE,FALSE)),REGEX.COMP($B$64,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$65,INDIRECT(ADDRESS(ROW(),3))<$D$65),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$65,INDIRECT(ADDRESS(ROW(),4))<$D$65),TRUE,FALSE)),REGEX.COMP($B$65,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$66,INDIRECT(ADDRESS(ROW(),3))<$D$66),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$66,INDIRECT(ADDRESS(ROW(),4))<$D$66),TRUE,FALSE)),REGEX.COMP($B$66,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")) )" 66 || OtherCourse F 11:00 AM 11:50 AM "=OR( AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$62,INDIRECT(ADDRESS(ROW(),3))<$D$62),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$62,INDIRECT(ADDRESS(ROW(),4))<$D$62),TRUE,FALSE)),REGEX.COMP($B$62,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$63,INDIRECT(ADDRESS(ROW(),3))<$D$63),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$63,INDIRECT(ADDRESS(ROW(),4))<$D$63),TRUE,FALSE)),REGEX.COMP($B$63,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$64,INDIRECT(ADDRESS(ROW(),3))<$D$64),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$64,INDIRECT(ADDRESS(ROW(),4))<$D$64),TRUE,FALSE)),REGEX.COMP($B$64,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$65,INDIRECT(ADDRESS(ROW(),3))<$D$65),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$65,INDIRECT(ADDRESS(ROW(),4))<$D$65),TRUE,FALSE)),REGEX.COMP($B$65,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")), AND(OR(IF(AND(INDIRECT(ADDRESS(ROW(),3))>$C$66,INDIRECT(ADDRESS(ROW(),3))<$D$66),TRUE,FALSE),IF(AND(INDIRECT(ADDRESS(ROW(),4))>$C$66,INDIRECT(ADDRESS(ROW(),4))<$D$66),TRUE,FALSE)),REGEX.COMP($B$66,""[""&INDIRECT(ADDRESS(ROW(),2))&""]"")) )" 

MOREFUNC ADDON

  • 这里是我发现的最后一个工作下载链接
  • 这里是一个很好的安装步行video

转到“新的格式规则”,然后select最后一个选项(在Excel 2010中),即“使用公式确定要格式化的单元格”)。 那么你应该可以编写一个Excel函数,如果符合标准,它将testing真实(并格式化单元格)。