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&lt;$G$2);(C2&gt;$G$2));AND((B2&gt;$G$2);(B2&lt;$H$2)));OR(AND((B2&lt;$G$3);(C2&gt;$G$3));AND((B2&gt;$G$3);(C2&lt;$H$3))));"1 &amp; 2";IF(OR(AND((B2&lt;$G$2);(C2&gt;$G$2));AND((B2&gt;$G$2);(B2&lt;$H$2)));"1";IF(OR(AND((B2&lt;$G$3);(C2&gt;$G$3));AND((B2&gt;$G$3);(C2&lt;$H$3)));"2";"&lt;null&gt;")))

单元格 D2:Windows 中的 =IF(AND(OR(AND((B2&lt;$G$2),(C2&gt;$G$2)),AND((B2&gt;$G$2),(B2&lt;$H$2))),OR(AND((B2&lt;$G$3),(C2&gt;$G$3)),AND((B2&gt;$G$3),(C2&lt;$H$3)))),"1 &amp; 2",IF(OR(AND((B2&lt;$G$2),(C2&gt;$G$2)),AND((B2&gt;$G$2),(B2&lt;$H$2))),"1",IF(OR(AND((B2&lt;$G$3),(C2&gt;$G$3)),AND((B2&gt;$G$3),(C2&lt;$H$3))),"2","&lt;null&gt;")))

显然,您必须复制到 D14,并且只有 B 行和 C 单元格应该更改。

【讨论】:

OP 的示例使用逗号作为区域列表分隔符。 很遗憾 Fred 我无法让您的代码正常工作。尽管如此,还是感谢您的帮助! 天哪..你不能改变“;”对于“,”?【参考方案5】:

认为如果您要添加更多行,这会更好地扩展

【讨论】:

以上是关于Excel:检查两个值是不是在两个其他值之间的主要内容,如果未能解决你的问题,请参考以下文章

检查数组元素是不是包含其他数组中的部分值[重复]

Python通过id值比较两个Excel,其他列中的“归档”输出与ID列有关的新excel差异

NSPredicate 如何测试一个值是不是包含其他两个值之一?

在 MSSQL 中更新之前检查是不是存在唯一值

如何在一个循环中比较两个列表的值是不是相等?

重复计算两个值之间的距离 Excel