比较excel单元格中数字中的数字

B C*_*per 6 microsoft-excel

在从 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")

确保理解我写的部分内容,以便在我打错字或忘记括号时可以更正 - 我这里没有电脑可以验证,我正在用手机打字。


fix*_*234 6

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 的某种组合。如果你从另一个方向接近它,你只想排除一个条件——所有的数字都不一样。可以更简单地对单个案例进行测试。

布尔运算

我将把它与另一个技巧结合起来。您正在寻找结果10结果,因此您已经在考虑表示真假的那些。您可以使用0and 的一些数学属性1

  • 零乘以零
  • 将一堆零相乘产生零
  • 将一堆相乘产生一个
  • 一堆零或一的乘积可以产生一个的唯一方法是如果它们都是一

把它放在一起

Excel 将trueandfalse视为1and 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)

并注意0or1值是由逻辑测试直接产生的;没有必要根据评估条件将这些值分配给结果。

  • 聪明,但很难理解。如果其他人检查该表并看到这一点,他们将无法理解该公式正在测试什么。 (2认同)