小伙伴们好啊,今天咱们分享一个比较冷门的知识点:迭代计算。
如果对迭代计算这个名字还比较陌生,那像下图中的循环引用提示,相信很多小伙伴遇到过:
当公式计算返回的结果需要依赖公式所在单元格的值时,无论是直接还是间接引用,都会出现循环引用的提示。
比如A1输入公式:=A1+1
或者B1输入公式:=A1,而A1公式为:=B1,都会产生循环引用。
默认情况下,Excel禁止使用循环引用,因为公式中引用自身的值进行计算,将无休止地计算而得不到答案。
其实,正确利用循环引用,能完成一些比较特殊的计算要求。
比如下面这个问题,要在A列内容的基础上,替换掉B列中的字符,最终得到A中不含B的字符:
这个问题使用迭代计算,会非常简单,接下来咱们就说说具体的操作步骤:
步骤1
依次单击【文件】→【选项】,打开【Excel选项】对话框。
在【公式】选项卡下勾选“迭代计算”的开关,这样Excel就允许使用循环引用了。
步骤2
首先在E1单元格中输入公式:
=MOD(E1,100)+1
这个公式就是引用了E1单元格本身的值。
公式使用MOD函数计算E1和100相除的余数,结果加上1。
先简单说说这个公式的计算过程:
咱们在上一步设置的迭代计算次数是100次,第1次计算时E1为0,MOD(0,100)的结果是0,加上1,得到1。
第2次计算时,MOD(1,100)的结果是1,加上1,得到2
……
第100次计算时,MOD(99,100)的结果是99,加上1,得到100。
说白了,就是在一个迭代周期完成后,E1单元格中的值会从1开始依次递增至100。
这个地方有什么用呢?别急,往下看。
步骤3
在C2单元格输入以下公式,下拉:
=SUBSTITUTE(IF(E$1=1,A2,C2),MID(B2,E$1,1),"")
SUBSTITUTE函数的作用是替换旧字符串中的字符的,用法为:
SUBSTITUTE(要处理的字符串,要替换的内容,替换成什么,[替换第几个])
如果不指定替换第几个时,就表示把符合条件的字符串全部替换掉。
先来看看本例中要处理的字符串是IF(E$1=1,A2,C2),也就是当E1单元格为1时,处理A2中的字符,否则就处理C2单元格已有的字符。
要替换的内容是什么呢?就是MID(B2,E$1,1)的计算结果。
MID函数从B2单元格的指定位置开始,提取1个字符,而负责指定位置的就是E1单元格中的公式结果了。当E1依次变成1至100时,MID函数就依次提取出B2单元格中的第1个、第2个、……第100个字符。
要替换成什么呢?本例中是空文本"",也就是相当于把MID函数的结果从A1中删除。
迭代计算的第1步,MID(B2,E$1,1)得到B2中的第1个字符“白”。SUBSTITUTE函数从A2字符“将船买酒白云边”中,将“白”替换掉,得到“将船买酒云边”。
迭代计算的第2步,MID(B2,E$1,1)得到B2中的第2个字符“酒”。
从这一步开始,SUBSTITUTE函数要处理的就是公式本身所在单元格的字符了,C2字符“将船买酒云边”中的“酒”,将被替换掉,得到新的结果“将船买云边”。
这样一层层的替换下去,直到替换掉B2中的第100个字符,最终就得到A不包含B的内容了。
有小伙伴说了,B2没有这么多字符啊。这不要紧,当MID函数开始提取的位置比实际的字符个数多时,会返回一个空文本"",如果SUBSTITUTE函数要在原有内容中替换掉的是空文本"",或者原有内容中不包含要替换掉的字符,最终就是啥都不替换。
好了,今天分享的内容就是这些吧,祝大家一天好心情!
迭代计算还有哪些用途呢,欢迎分享你的经验。
图文制作:祝洪忠
