前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel公式练习62: 判断回文

Excel公式练习62: 判断回文

作者头像
fanjy
发布2020-05-14 21:07:06
8260
发布2020-05-14 21:07:06
举报
文章被收录于专栏:完美Excel

本次的练习是:使用公式判断单元格中的数据是否是回文。

所谓回文,是指单词或句子无论是从左向右读还是从右向左读,都是一样的。也就是说,属于回文的单词或句子是左右对称的。例如,单词“deed”、“madam”。

先不看答案,自已动手试一试。

公式

假设单词或句子在单元格A1中,那么可以使用公式:

=IF( SUMPRODUCT( ( MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)= MID(A1,LEN(A1)-ROW(OFFSET($A$1,,,LEN(A1)))+1,1)) + 0 ) = LEN(A1), "这个是回文","No!")

判断该单元格中的值是否是回文。

公式解析

1. 假设单元格A1中的数据是“madam”。很明显,这是个回文。

公式中的:

ROW(OFFSET($A$1,,,LEN(A1)))

OFFSET函数以单元格A1为起点扩展5个单元格(示例中LEN(A1)=5),因此其可解析为:

ROW($A$1:$A$5)

得到:

{1;2;3;4;5}

这样,公式中的:

MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)

转换为:

MID(A1, {1;2;3;4;5},1)

得到:

{"m";"a";"d";"a";"m"}

再看公式中的:

MID(A1,LEN(A1)-ROW(OFFSET($A$1,,,LEN(A1)))+1,1)

可转换为:

MID(A1,LEN(A1)-{1;2;3;4;5}+1,1)

转换为:

MID(A1,5 -{1;2;3;4;5}+1,1)

转换为:

MID(A1,{5;4;3;2;1},1)

得到:

{"m";"a";"d";"a";"m"}

将两者相比较:

MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)= MID(A1,LEN(A1)-ROW(OFFSET($A$1,,,LEN(A1)))+1,1)

即:

{"m";"a";"d";"a";"m"}={"m";"a";"d";"a";"m"}

得到:

{TRUE;TRUE;TRUE;TRUE;TRUE}

将上述结果代入公式:

=IF( SUMPRODUCT( ( MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1) = MID(A1,LEN(A1)-ROW(OFFSET($A$1,,,LEN(A1)))+1,1))+ 0 ) = LEN(A1), "这个是回文", "No!")

得到:

=IF( SUMPRODUCT( ({TRUE;TRUE;TRUE;TRUE;TRUE})+ 0 ) = LEN(A1), "这个是回文", "No!")

转换为:

=IF( SUMPRODUCT( {1;1;1;1;1} ) =LEN(A1), "这个是回文", "No!")

转换为:

=IF( 5 = LEN(A1), "这个是回文","No!")

转换为:

=IF( 5 = 5,"这个是回文", "No!")

转换为:

=IF( TRUE ,"这个是回文", "No!")

得到:

这个是回文

2. 假设单元格A1中的数据是“excel”。很明显,这不是回文。

根据上面的分析可知,公式中的:

MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)

将转换为:

{"e";"x";"c";"e";"l"}

公式中的:

MID(A1,LEN(A1)-ROW(OFFSET($A$1,,,LEN(A1)))+1,1)

将转换为:

{"l";"e";"c";"x";"e"}

两者比较:

MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)= MID(A1,LEN(A1)-ROW(OFFSET($A$1,,,LEN(A1)))+1,1)

即:

{"e";"x";"c";"e";"l"}={"l";"e";"c";"x";"e"}

得到:

{FALSE;FALSE;TRUE;FALSE;FALSE}

代入主公式中,得到:

=IF( SUMPRODUCT( ({TRUE;TRUE;TRUE;TRUE;TRUE})+ 0 ) = LEN(A1), "这个是回文", "No!")

转换为:

=IF( SUMPRODUCT({0;0;1;0;0}) =LEN(A1), "这个是回文", "No!")

转换为:

=IF(1 = 5, "这个是回文","No!")

显然得到:

No!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档