函数综合实战-一个单元格中的坑!
这是知乎上看到的一位网友的提问,看了一下,虽然您可能遇不到,但是这个问题可以帮助我们检测一下,我们文本函数的学的怎么样了?看一下实战应用能不能耍起来!
分析及思路:
1、数据在一个单元格,需要使用最大的数值依次相减,那么就要考虑先逐位拆分,拆分就要看看如何文本函数的功力了!
2、拆分后再提取最大值,最后再相减,这里应该是最大值函数和数值相减问题
3、最后还要考虑拼接,我们可以使用新的拼接函数,或者考虑对应的位置乘以10的对应次方再相加。
4、最后我们还要考虑本身那位是要去掉的,其实本身相减结果是0,我们去掉0即可!
下面我们就来看看实际公式是如何书写的!(不想看过程的直接跳到结尾看结果)
第一步 | 单元格数值拆分
拆分我们可以使用MID函数,然后给出每次提取的位置,提取长度为1即可,
每次提取的位置,我们需要根据内容长度给定!这里有点综合!
如上公式我们就可以依次提取出每一位,但是这里有个问题,长度是不定的,我们不能写死ROW(1:6),这里的6,我们需要根据单元格长度来自动获取!
▼逐位提取公式
=MID(A1,ROW(INDIRECT('1:'&LEN(A1))),1)
那么新手可能会问为什么要INDIRECT,其实你可以先按照分析和你的想法去试试
至于为什么,因为ROW的参数需要的是一个引用(Reference),而上面的写法是文本,INDIRECT则可以把文本变成引用
如果还是不懂,那么保姆级的教程,肯定也是为你们准备好了对应的INDIRECT扩展学习的教程的!
▼MAX提取最大值 =MAX(--MID(A1,ROW(INDIRECT('1:'&LEN(A1))),1))
▼LET简化公式 =LET(截取,MID(A1,ROW(INDIRECT('1:'&LEN(A1))),1),MAX(--截取)-截取)
▼TEXTJOIN拼接函数 =TEXTJOIN(,,LET(截取,MID(A1,ROW(INDIRECT('1:'&LEN(A1))),1),MAX(--截取)-截取))
▼可以提取出ROW部分继续简化 =SUMPRODUCT(LET(截取,MID(A1,ROW(INDIRECT('1:'&LEN(A1))),1),MAX(--截取)-截取)*10^(6-ROW(INDIRECT('1:'&LEN(A1)))))
▼最终公式 =SUBSTITUTE(TEXTJOIN(,,LET(截取,MID(A1,ROW(INDIRECT('1:'&LEN(A1))),1),MAX(--截取)-截取)),0,)
赞 (0)