Excel:检查两个值是不是在两个其他值之间
Posted
技术标签:
【中文标题】Excel:检查两个值是不是在两个其他值之间【英文标题】:Excel: Check to see if Two Values are Between Two Other ValuesExcel:检查两个值是否在两个其他值之间 【发布时间】:2018-07-31 01:24:53 【问题描述】:我一直在做噩梦,试图找到解决这个问题的方法,希望各位巫师能提供帮助。
在下面的示例中,我有一个数据集(A 到 C 列)和参考列(F 到 H)。 D 列是公式的所需输出。此列已填充了我想要的输出示例。
表 1。
表 1 显示了我的数据集。我的目标是在column D
中生成(使用公式)输出,该输出对columns B & C
中的rows 2-14
中的数据是否属于columns G & H
中我的参考数据集的开始和结束参数进行分类。如果为 true,则公式应返回 column F
中所示的行号,其中 column D
中存在匹配项。
使用IF(AND(
公式,只要 B 和 C 的开头和结尾分别是 >= to G
和 <= to H
,我就能弄清楚如何做到这一点,但我终生无法弄清楚如何做到这一点如果第 3 行的开始和结束部分位于第 1 行之外,则执行此操作。示例:=IF(AND(B2>=$G$2,C2<=$H$2),$F$2,IF(AND(B2>=$G$3,C2<=$H$3),$F$3,"<null>"))
如下面的Figure 1
所示,第 1 行显示了“G2:H2”中描述的边界,而第 2 行显示了“G3:H3”中描述的边界。我的目标是查看第 3 行和第 4 行是否与第 1 行或第 2 行重叠,并输出一个变量,如“D 列”所示。任何帮助将非常感激。谢谢。
图 1。
我不想被一个糟糕的数据集打败。
【问题讨论】:
你所说的重叠是什么意思。有重叠吗?完全重叠? 部分重叠必须使用 OR 而不是 AND。 AND 表示整个重叠! 任何重叠,抱歉我应该指定。如果我将上面列出的公式更改为 OR,它们都会导致第 1 行不正确。 【参考方案1】:另一个,
=IF(NOT(OR(OR(AND(B2>=S$2,B2<=T$2),AND(C2>=S$2,C2<=T$2)), OR(AND(B2>=S$3,B2<=T$3),AND(C2>=S$3,C2<=T$3)))), "<null>",
SUBSTITUTE(TRIM(IF(OR(AND(B2>=S$2, B2<=T$2), AND(C2>=S$2, C2<=T$2)), 1, TEXT(,))&CHAR(32)&
IF(OR(AND(B2>=S$3, B2<=T$3), AND(C2>=S$3, C2<=T$3)), 2, TEXT(,))), CHAR(32), " & "))
【讨论】:
谢谢您,先生。我会将其标记为正确,因为您是第一个回复的。我真的很感激你的帮助!是时候进行逆向工程并从您的代码中学习了。【参考方案2】:功能齐全,虽然有点冗长。
=IF(IF(OR(AND(B2>=$G$2,B2<=$H$2),AND(C2>=$G$2,C2<=$H$2)),$F$2,"")&IF(OR(AND(B2>=$G$3,B2<=$H$3),AND(C2>=$G$3,C2<=$H$3)),$F$3,"")<>"",IF(OR(AND(B2>=$G$2,B2<=$H$2),AND(C2>=$G$2,C2<=$H$2)),$F$2&IF(OR(AND(B2>=$G$3,B2<=$H$3),AND(C2>=$G$3,C2<=$H$3))=TRUE," & ",""),"")&IF(OR(AND(B2>=$G$3,B2<=$H$3),AND(C2>=$G$3,C2<=$H$3)),$F$3,""),"<Null>")
【讨论】:
你的公式也很有效。我已将 Jeeped 的答案标记为正确,因为他比您快 1 分钟 :( 非常感谢您的帮助。我投票表示感谢。【参考方案3】:遗漏是没有检查有问题的行 (B&C) 的可能性 跨越了其他两个线段。另外,这个检查需要先做:
IF(AND(B12>=L1Start,B12<=L1End,C12>=L2Start,C12<=L2End),"1 & 2",IF(AND(B12>=L1Start,B12<=L1End),1,IF(AND(B12>=L2Start,B12<=L2End),2,"<null>")))
为了便于阅读,我将开始和停止单元格命名为 L1Start 和 L1End、L2Start 和 L2Endals,除非 Col F 中的行号发生更改,否则我也会对它们进行强化,但如果需要,可以很容易地将它们更改为相应的单元格引用-- 否则原始声明与提供的差不多。
这是我的结果:
希望对您有所帮助...
祝你好运。
【讨论】:
【参考方案4】:解决方案:
单元格 D2:Mac 中的=IF(AND(OR(AND((B2<$G$2);(C2>$G$2));AND((B2>$G$2);(B2<$H$2)));OR(AND((B2<$G$3);(C2>$G$3));AND((B2>$G$3);(C2<$H$3))));"1 & 2";IF(OR(AND((B2<$G$2);(C2>$G$2));AND((B2>$G$2);(B2<$H$2)));"1";IF(OR(AND((B2<$G$3);(C2>$G$3));AND((B2>$G$3);(C2<$H$3)));"2";"<null>")))
单元格 D2:Windows 中的 =IF(AND(OR(AND((B2<$G$2),(C2>$G$2)),AND((B2>$G$2),(B2<$H$2))),OR(AND((B2<$G$3),(C2>$G$3)),AND((B2>$G$3),(C2<$H$3)))),"1 & 2",IF(OR(AND((B2<$G$2),(C2>$G$2)),AND((B2>$G$2),(B2<$H$2))),"1",IF(OR(AND((B2<$G$3),(C2>$G$3)),AND((B2>$G$3),(C2<$H$3))),"2","<null>")))
显然,您必须复制到 D14,并且只有 B 行和 C 单元格应该更改。
【讨论】:
OP 的示例使用逗号作为区域列表分隔符。 很遗憾 Fred 我无法让您的代码正常工作。尽管如此,还是感谢您的帮助! 天哪..你不能改变“;”对于“,”?【参考方案5】:认为如果您要添加更多行,这会更好地扩展
【讨论】:
以上是关于Excel:检查两个值是不是在两个其他值之间的主要内容,如果未能解决你的问题,请参考以下文章
Python通过id值比较两个Excel,其他列中的“归档”输出与ID列有关的新excel差异