IFの句読点を読む

IFの句読点を読む
=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 が 100 万を超える要素で構成される配列を生成する必要がある (驚くほどの不必要なリソースが必要) だけでなく、2 番目の配列が何千もの負の値で構成されることを意味し、当然 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","")

よろしく

関連情報