标签:Excel公式练习
前天,2021年12月2日,“20211202”,从左往右读或从右往左读都一样,被大家称为“爱的对称日”。引用人民日报的微博:“人生漫长也短暂,愿你永远会为了一朵盛放的花而感到快乐,会为了一顿简单的家常菜笑意盈盈。爱的对称日,愿你的生活充满爱。”
其实,这就是我们常说的“回文”。回文是一个单词、短语、韵文或句子,从前往后阅读或者从后往前阅读的内容都相同。例如:A man, a plan, a canal, Panama!
因此,如果要检查单元格中的内容是否是回文,需要反转单元格内容,看看原内容与反转后的内容是否相同。例如,下图1所示的数据,单元格B4中包含的内容“mam”,反转后的内容也是“mam”,因此“mam”是一个回文。
如何编写公式来判断呢?
假设单元格B4中包含单词或句子,首先要对其进行清理,即删除其中的空格、逗号、感叹号和其他标点符号。因此,句子“Cigar?Toss it in a can.It is so tragic.”整理后为“CigarTossitinacanItissotragic”。
下一步是将这个清理过的文本(假设在C4中)与其反转的内容相匹配。
但没有反转文本的公式。因此,使用MID()一次提取一个字母,并将其与从末尾开始的相应字母匹配。(即第一个字母与最后一个字母、第二个字母与倒数第二个字母等)
使用:
MID(C4,ROW(OFFSET(A1,,,LEN(C4))),1) = MID(C4,LEN(C4)-ROW(OFFSET(A1,,,LEN(C4))) 1,1)
上面公式的左部分将按从左到右的顺序提取出C4中的各个字母,右部分将按从右到左的顺序提出字母。
我们将其放置在SUMPRODUCT公式中,以便检查C4中是否是回文:
=IF(SUMPRODUCT((MID(C4,ROW(OFFSET(A1,,,LEN(C4))),1)=MID(C4,LEN(C4)-ROW(OFFSET(A1,,,LEN(C4))) 1,1)) 0)=LEN(C4),"是回文", "不是!")
原理相同,也可以使用下面的公式:
=IF(SUMPRODUCT((MID(C4,ROW(INDEX(A:A,1):INDEX(A:A,LEN(C4))),1)=MID(C4,LEN(C4)-ROW(INDEX(A:A,1):INDEX(A:A,LEN(C4))) 1,1)) 0)=LEN(C4),"是回文","不是!")
你的公式更简洁优雅吗?欢迎留言。