在 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
阿甘朱的答案可能是您正在尋找的。但很多時候,Excel 問題的解決方案來自於以不同的方式看待它。這裡有一個稍微不同的方法,其中有一些你可以放在口袋裡的想法。
左、右、中
由於一切都是三位數,我發現更容易將數字視為:
LEFT(A98,1)
MID(A98,2,1)
RIGHT(A98,1)
只是個人喜好,這將記錄如何使用這些功能。這是最左邊的 1 個字符,中間從位置 2 開始長度為 1,最後是最右邊的 1 個字符。
逆向思維
您是從尋找匹配數字的任意組合的方向來解決這個問題的。這需要 IF、OR 和/或 AND 的某種組合。如果您從另一個方向接近它,則只需排除一個條件 - 所有數字都不同。單一案例的測試可以更簡單地完成。
布林運算
我會將其與另一個技巧結合。您正在尋找“1
或”0
結果,因此您已經在考慮那些代表真與假的結果。您可以使用0
和的一些數學屬性1
:
- 零乘以任何東西都是零
- 一堆零相乘得到零
- 一堆相乘得到一個
- 一堆 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
or1
值是由邏輯測試直接產生的;沒有必要根據評估條件將這些值分配給結果。
答案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。