在从 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非常缺乏经验,它不接受这个公式。
Aga*_*nju 11
那其实并没有那么远。
使用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")
确保理解我写的部分内容,以便在我打错字或忘记括号时可以更正 - 我这里没有电脑可以验证,我正在用手机打字。
Aganju 的答案可能正是您要找的。但是,很多时候,Excel 问题的解决方案来自于以不同的方式看待它。这里有一些不同的方法,其中包含一些您可以放在口袋里的想法。
左、右、中
由于一切都是三位数,我发现将数字视为更容易:
LEFT(A98,1)
MID(A98,2,1)
RIGHT(A98,1)
Run Code Online (Sandbox Code Playgroud)
只是个人喜好,这将记录如何使用这些功能。这是最左边的 1 个字符,中间从位置 2 开始,长度为 1,最右边的 1 个字符。
逆向思维
您是从查找匹配数字的任意组合的方向来解决这个问题的。这需要 IF、OR 和/或 AND 的某种组合。如果你从另一个方向接近它,你只想排除一个条件——所有的数字都不一样。可以更简单地对单个案例进行测试。
布尔运算
我将把它与另一个技巧结合起来。您正在寻找结果1
或0
结果,因此您已经在考虑表示真假的那些。您可以使用0
and 的一些数学属性1
:
把它放在一起
Excel 将true
andfalse
视为1
and 0
。因此,无需 IF、AND 或 OR,您可以使用:
= (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
Run Code Online (Sandbox Code Playgroud)
这个收益率1
,如果所有的数字都是不同的,0
如果任意组合是相同的。这就是区分事物。但是,如果您的心态是它应该是相反的,正如您在问题中所描述的那样,您可以使用1
减去该公式来反转它:
= 1 - (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
Run Code Online (Sandbox Code Playgroud)
并注意0
or1
值是由逻辑测试直接产生的;没有必要根据评估条件将这些值分配给结果。