Excel情报局
职场联盟Excel
大家好,今天我们来解决一个这样的问题:如何将以区间显示的数字展开,拆分为单个数字?
如下图所示:
A列为数字区间,比如区间“2~6”,实质表示“2,3,4,5,6”这5个数字,只不过以区间的格式简化表示的,那么如何将其展开后拆分出这5个数字呢?
我们用3个函数解决这个问题。下面看过程。
首先输入SUBSTITUTE函数:
=SUBSTITUTE(A2,"~",":")
SUBSTITUTE函数可以将字符串中的旧值替换为指定的新值。
SUBSTITUTE(原字符串,旧文本,新文本,[替换第几个旧文本])
很容易理解:SUBSTITUTE函数将A2单元格中的旧字符"~"替换为新字符":"。
之所以用SUBSTITUTE函数将“2~6”转换为“2:6”,就是想要将其表示为第2至6行的引用,但是SUBSTITUTE函数返回的“2:6”,实质为一个文本值,并不是一个引用。
所以外嵌套一个INDIRECT函数:
=INDIRECT(SUBSTITUTE(A2,"~",":"))
INDIRECT函数可以将具有引用样式的文本字符串,变成真正的引用。
INDIRECT(具有引用样式的字符串,[引用样式])
如果第二参数为TRUE或省略(包括参数值和逗号),会将第一参数中的字符串解释为A1样式的引用,如果第二参数为FALSE或是0,则将第一参数中的字符串解释为R1C1样式的引用。
所以借助INDIRECT函数将具有引用样式的文本字符串“2:6”转换为真正的引用“2:6”。
这里我们观察到虽然INDIRECT函数返回值返回一个“0”并提示“循环引用”的警告,但不用理会,不会影响后续的操作。
再外嵌套ROW函数:
=ROW(INDIRECT(SUBSTITUTE(A2,"~",":")))
用ROW函数返回“2:6”,即第2行至第6行引用的行号,结果以数组溢出显示:{2;3;4;5;6}。
最后外嵌套TEXTJOIN函数:
=TEXTJOIN(",",,ROW(INDIRECT(SUBSTITUTE(A2,"~",":"))))
TEXTJOIN函数,将第一参数合并的分隔符设置为“,”,跳过第二参数,即忽略空白单元格,将{2;3;4;5;6}数组内各元素进行合并,返回新的文值"2,3,4,5,6"。
〖往期知识点精彩超链接点击阅读〗