小伙伴们好,今天要举办一个擂台竞赛,看看谁写出的公式最短最巧妙!
题目是这样的:
如果源数据中的文本前8位是数字,则提取数字,否则就直接引用源数据。
题目要求就是这么多,快来看看你怎么样写出最短的公式吧!
01
第一个公式,长度63个字符。
在单元格B2中输入公式“=IF(LEN(MAX(IFERROR(LEFT(A2,ROW($1:$20))*1,0)))=8,LEFT(A2,8),A2)”,三键回车并向下拖曳即可。
思路:
LEFT函数依次从左向右分别提取1个,2个,... 20个字符,并将它们转换成数值型数字
IFERROR函数将错误值转换为0
提取出最大的数字。如果最大字符长度的数值为8,则提取该长度的字符,否则引用对应的单元格
02
第二个公式,长度59个字符。
在单元格B2中输入公式“=IF(ISERR(SUM(--MID($A2,ROW($A$1:$A$8),1))),$A2,LEFT($A2,8))”,三键回车并向下拖曳即可。
思路:
利用MID函数提取第一个至第八个字符,并转换为数字
SUM函数求和。如果有提取出来的字符有文本字符,则SUM函数的结果返回错误值
ISERR函数判断是否为错误值
IF函数进行逻辑判断,并进行不同的操作
03
第三个公式,长度42个字符。这一步,由于是一次性提取长度为8的字符,因此源数据中“20230101元旦快乐”可以更改为“2023/1/1元旦快乐”。
在单元格B2中输入公式“=IF(IFERROR(-LEFT(A2,8)<0,0),LEFT(A2,8),A2)”,并向下拖曳即可。
思路:
LEFT函数提取长度为8的字符,并转换为负数,并与0比大小
IFERROR将错误值转换为0。这一步会返回TRUE或者FALSE两个结果
IF函数做逻辑判断,进而做不同的操作
04
最短的公式。
晋ICP备17002471号-6