分享

你知道如何用公式提取不重复的大写英文字母吗?

 EXCEL应用之家 2022-09-23 发布于上海


送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

【置顶公众号】或者【设为星标】及时接收更新不迷路



小伙伴们好,今天要和大家分享一道非常特别的文本题目。题目的要求是这样子的:



想一想,是不是无从下手?要解决这道题目,就需要借助今天要介绍给大家的这两个函数:

DECIMAL函数和BASE函数。

DECIMAL函数的语法结构:

DECIMAL(text, radix)按给定基数将数字的文本表示形式转换成十进制数。

  • 文本    必需。

  • Radix    必需。Radix 必须是整数。

Text 的字符串长度必须小于或等于 255 个字符。

Text 参数可以是对于基数有效的字母数字字符的任意组合,并且不区分大小写。

Excel 支持 Text 参数大于或等于 0 且小于 2^53。可解析为一个大于 2^53 的数字的 text 参数可能导致丢失精度。

基数必须大于或等于 2(二进制或基数 2)并且小于或等于 36(基数 36)。
大于 10 的基数根据需要使用数值 0-9 和字母 A-Z。例如,基数 16(十六进制)使用 0-9 和 A-F,而基数 36 使用 0-9 和 A-Z。

如果任何一个参数超出其限制,DECIMAL 可能返回 #NUM! 或 #VALUE! 错误值。

BASE函数的语法结构:

BASE(Number, Radix [Min_length]),将数字转换为具备给定基数的文本表示。

  • Number    必需。要转换的号码。必须是大于或等于 0 且小于 2^53 的整数。

  • Radix    必需。要将数字转换为的基本基数。必须是大于或等于 2 且小于或等于 36 的整数。

  • Min_length    可选。返回的字符串的最小长度。必须是大于或等于 0 的整数。

如果 Number、Radix 或 Min_length 超出最小值或最大值的限制范围,则 BASE 返回错误值 #NUM! 。

如果 Number 是非数值,则 BASE 返回错误值 #VALUE! 。

作为参数输入的任何非整数数字将被截尾取整。

当包含 Min_length 参数时,如果结果短于指定的最小长度,将在结果中添加前导零。例如,BASE(16,2) 返回 10000,但 BASE(16,2,8) 返回 00010000。

Min_length 参数的最大值为 255。

这一组函数我们平时几乎是用不到的。所以大家也不必可以去钻研这一组函数。它们的某些特性正好符合今天我们的这道题目,所以拿来一用。


01

一起来看看如何书写公式吧!



在单元格C2中输入公式“=SUBSTITUTE(BASE(SUM(IFERROR(DECIMAL(MID(A2,LARGE(IFERROR(FIND(CHAR(ROW($65:$90)),A2),),ROW($1:$9)),1),36)*36^ROW($1:$9),)),36),0,)”,三键回车并向下拖曳即可。

思路:

  • CHAR(ROW($65:$90))部分,是内码中代表大写英文字母

  • FIND(CHAR(ROW($65:$90)),A2)部分,在源数据中寻找26个大写的英文字母

  • IFERROR(FIND(CHAR(ROW($65:$90)),A2),)部分,如果没有找到,就将错误值转换为0

  • LARGE(IFERROR(FIND(CHAR(ROW($65:$90)),A2),),ROW($1:$9))部分,按从大到小的顺序返回各字母对应的位置信息。由于本题中最大的英文字母个数是9,所以这里使用ROW($1:$9),如果个数更多,则更改相应的数字即可

  • MID(A2,LARGE(IFERROR(FIND(CHAR(ROW($65:$90)),A2),),ROW($1:$9)),1),依次将代表字母的数字提取出来

  • DECIMAL(MID(A2,LARGE(IFERROR(FIND(CHAR(ROW($65:$90)),A2),),ROW($1:$9)),1),36)部分,将对应字母转换为36进制下的数字。由于英文字母有26个,所以这里我们选择转换为36进制

  • DECIMAL(MID(A2,LARGE(IFERROR(FIND(CHAR(ROW($65:$90)),A2),),ROW($1:$9)),1),36)*36^ROW($1:$9)部分,进行加权处理。这里由于是在36进制下,所以我们以36为底数进行加权

  • 利用IFERROR函数将错误值转换为0

  • SUM函数求和

  • BASE函数做一个逆运算,将数值转换回字符

  • 利用SUBSTITUTE函数替换掉0,得到正确结果

由于本篇内容太偏门了,所以大家只要收藏本篇,当遇到类似的问题后,在拿出来照猫画虎套用就好了。我匿了匿了...


好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!

-END-

长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助

我就知道你“在看”

推荐阅读

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多