在从 000 到 999 的 3 位数字列表中,我需要能够识别至少有 2 位数字相同的数字,您能帮我提供一个公式吗?
我试过了=IF(LEFT(A98,1) = "LEFT(A98,2)"OR LEFT(A98,2) = "LEFT(A98,3)" OR LEFT(A98,1) ="LEFT(A98,3)" , "0","1")
。但我对 Excel 非常不熟悉,它不接受这个公式。
答案1
事实上,这并不是那么遥远。
使用MID()
而不是LEFT()
,因为它LEFT()
会将所有字母而不仅仅是一个字母进行比较。
删除不必要的引号,它就可以工作了:
IF(OR(MID(A98,1,1)=MID(A98,2,1),MID(A98,1,1)=MID(A98,3,1),MID(A98,2,1)=MID(A98,3,1)),"1","0")
确保理解我所写内容的各个部分,这样如果我打错了或者忘记了括号,你就可以纠正它——我这里没有电脑可以验证,而且我在用手机打字。
答案2
Aganju 的答案可能正是您想要的。不过,很多时候,Excel 问题的解决方案来自于以不同的方式看待它。这里有一个稍微不同的方法,以及一些您可以记住的想法。
左、右、中
由于所有内容都是三位数,因此我发现将这些数字视为以下形式更容易:
LEFT(A98,1)
MID(A98,2,1)
RIGHT(A98,1)
这只是个人偏好,本文将记录如何使用这些函数。即最左边的 1 个字符、中间从位置 2 开始的长度为 1 的字符以及最右边的 1 个字符。
逆向思维
您从寻找匹配数字的任意组合的方向着手。这需要 IF、OR 和/或 AND 的某种组合。如果您从另一个方向着手,则只有一个条件需要排除——所有数字都不同。对这种单一情况的测试可以更简单地完成。
布尔运算
我将结合另一个技巧。您正在寻找1
或0
结果,因此您已经在考虑代表真和假的结果。您可以使用0
和的一些数学属性1
:
- 零乘以任意数都是零
- 把一堆零相乘得到零
- 将一堆 1 相乘得到 1
- 一组零或一的乘积唯一能得出一的条件是它们全都是一
把它放在一起
Excel 将true
和false
视为1
和0
。因此,无需 IF、AND 或 OR,您可以使用:
= (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
1
如果所有数字都不同,并且0
任何组合都相同,则结果为1
:
= 1 - (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
请注意,0
或1
值是由逻辑测试直接产生的;没有必要根据评估条件将这些值分配给结果。
答案3
这是另一种略有不同的方法,使用@fixer1234 的LEFT
MID
&RIGHT
并乘以零的想法:
=IF((LEFT(A99,1)-MID(A99,2,1)) * (LEFT(A99,1)-RIGHT(A99,1)) * (MID(A99,2,1)-RIGHT(A99,1))=0,1,0)
如果任何一对相等,则乘法的结果为零,而乘法的结果IF
为 1。