Satzzeichen in IF lesen

Satzzeichen in IF lesen
=IF(MID(B3,ROW(A:A),1)=MID(B3,LEN(B3)+1-ROW(A:A),1),"T")

Ich habe das Palindrom in Zelle B3 mit der obigen Formel gelesen, es funktionierte einwandfrei (wenn es ohne Satzzeichen und Leerzeichen gefunden wurde). Aber als ich versuchte, das Palindrom mit Satzzeichen und Leerzeichen zu lesen, war es nicht gut lesbar.

Zum Beispiel:-

B3:lol---->Palindrom B3:l ol---->Palindrom ........( da aber zwischen l und ol ein Leerzeichen ist, sollte es kein Palindrom sein)

Ich verstehe nicht, welche Punkte ich in meiner Formel übersehen habe. Kann mir bitte jemand helfen, meine Formel allgemeingültig zu machen? Danke!


Grüße,

Antwort1

Ihre aktuelle Formel weist mehrere große Probleme auf, daher bin ich sehr überrascht, Ihre Aussage zu hören, sie „funktioniere gut“.

Erstens gibt es keine externe Funktion, die auf die IF-Anweisung einwirkt. Daher wird alles außer dem allerersten Element im durch den Vergleich erzeugten Array berücksichtigt. Tatsächlich gibt Ihre Formel „T“ zurück, wenn der erste Buchstabe in Ihrer Zeichenfolge mit dem letzten übereinstimmt: Alle anderen Buchstaben in der Zeichenfolge sind, soweit es diesen Ausdruck betrifft, völlig überflüssig. Laut Ihrer Formel wird eine Zeichenfolge wie ABCDEA als Palindrom betrachtet. Und das ist auch der Grund, warum Ihr Beispiel mit „L OL“ „T“ zurückgibt – die mittleren Buchstaben spielen einfach keine Rolle.

Zweitens geben Sie eine Formel in ein Array ein, wobei die Einträge einer ganzen Spalte an die ROW-Funktion übergeben werden, um das Array zu generieren, das als MIDs übergeben wird.StartnummerParameter. Dies bedeutet nicht nur, dass Excel ein Array mit über einer Million Elementen generieren muss (was eine erstaunliche und unnötige Menge an Ressourcen erfordert), sondern auch, dass Ihr zweites Array aus Tausenden und Abertausenden von negativen Werten besteht, was natürlich zu Fehlern führt, wenn es an MID übergeben wird.

Versuchen:

=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","")

Grüße

verwandte Informationen