=IF(MID(B3,ROW(A:A),1)=MID(B3,LEN(B3)+1-ROW(A:A),1),"T")
我正在使用上面的公式在單元格 B3 中讀取回文,它工作正常(如果找到沒有標點符號和空格)。但是當我嘗試用標點符號和空格閱讀回文時,它讀起來不太好。
例如:-
B3:lol---->回文 B3:l ol---->回文 ........(但 l 和 ol 之間有空格,所以不應該是回文)
我不明白我的公式中遺漏了哪些要點?誰能幫我讓我的公式通用嗎?謝謝!
問候,
答案1
您目前的公式有幾個大問題,所以我很驚訝聽到您宣稱它「工作正常」。
首先,沒有外部函數作用於IF語句。因此,除了比較產生的數組中的第一個元素之外的所有元素都會被考慮。實際上,如果字串中的第一個字母與最後一個字母匹配,則公式將返回“T”:就該表達式而言,字串中的所有其他字母都是完全多餘的。根據你的公式,像ABCDEA這樣的字串被認為是回文。這也是為什麼你的“L OL”範例返回“T”的原因 - 中間的字元根本不重要。
其次,您要透過陣列輸入公式,並將整個列的條目傳遞給 ROW 函數,以產生要作為 MID 傳遞的陣列起始編號範圍。這不僅意味著Excel 必須產生一個由超過一百萬個元素組成的陣列(需要驚人且不必要的資源量),而且還意味著您的第二個陣列將由成千上萬個負值組成,這當然傳遞到 MID 時會導致錯誤。
嘗試:
=IF(SUMPRODUCT(N(MID(B3,ROW(INDEX(A:A,1):INDEX(A:A,LEN(B3))),1)<>MID(B3,LEN(B3)+1-ROW(INDEX(A:A,1):INDEX(A:A,LEN(B3))),1)))=0,"T","")
問候