excel公式教程:拆分连字符分隔的数字并放置在同一列中
发布时间:2023-05-29 06:26:42
在单元格区域A1:A6中,有一些数据,有的是单独的数字,有的是由连字符分隔的一组数字,例如13-16表示13、14、15、16,现在需要将这些数据拆分并依次放置在列D中,如下图1所示。
图1
先不看答案,自已动手试一试。
公式
在单元格D1中输入数组公式:
=IF(ROWS($D$1:$D1)>SUM(last-first+1),””,SMALL(IF(first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1)>–last,””,first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1)),ROWS($D$1:$D1)))
向下拖拉至出现空单元格为止。
公式解析
公式中的first和last是定义的两个名称。
名称:first
引用位置:=LEFT(SUBSTITUTE($A$1:$A$6,”-“,REPT(“”,5)),5)
名称:last
引用位置:=RIGHT(SUBSTITUTE($A$1:$A$6,”-“,REPT(“”,5)),5)
我们来看看这两个名称是怎样运转的。第一个名称:first=LEFT(SUBSTITUTE($A$1:$A$6,”-“,REPT(“”,5)),5)
转换为:=LEFT(SUBSTITUTE({“1-2”;”4-6”;”9”;”10-11”;”13-16”;”21”},”-“,REPT(“”,5)),5)
转换为:=LEFT(SUBSTITUTE({“1-2”;”4-6”;”9”;”10-11”;”13-16”;”21”},”-“,“ ” ),5)
转换为:=LEFT({“1 2”;”4 6”;”9”;”10 11”;”13 16”;”21”},5)
得到的结果为:={“1 ”;”4 ”;”9”;”10 ”;”13 ”;”21”}
上面公式中的数字5是任意选的,只要能保证将数字筛选出来即可。
对于第二个名称:last。与上面的原理相同,最后得到的结果为:={“ 2”;” 6”;”9”;” 11”;” 16”;”21”}
再来看公式中IF语句的第一部分:IF(ROWS($D$1:$D1)>SUM(last-first+1),””
使用定义的名称替换公式相对应的名称位置:IF(ROWS($D$1:$D1)>SUM({“ 2”;” 6”;”9”;” 11”;” 16”;”21”}-{“1 ”;”4 ”;”9”;”10 ”;”13 ”;”21”}+1),””
得到:IF(ROWS($D$1:$D1)>SUM({2;3;1;2;4;1}),””
注意,这里没有必要对两个数组使用TRIM函数,Excel在进行数学减法运算时忽略数字前后的空格并强制转换成数学运算。
这样,我们可以看到上面的结果数组中对应于单元格A1:A6中每个数据要返回的数字个数,例如“1-2”将返回2个值、“4-6”将返回3个值,依此类推。因此,该数组的和就是我们想要返回的数字的总数:
IF(ROWS($D$1:$D1)>13,””
所以,向下复制公式时,超过13行将返回空值。
下面看看公式中的主要部分:
SMALL(IF(first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1)>–last,””,first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1)),ROWS($D$1:$D1))
可以看到,下面的部分出现了2次:first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1)
其中,last-first在前面已经讲过,生成数组:{1;2;0;1;3;0}
其最大值是3,然后加上1得到4,即:MAX(last-first)+1
的结果是4。实际上,这个值代表我们从A1:A6的各字符串中范围最大的字符串返回的数字数量。
这样,就将上面的部分公式转换为:first+TRANSPOSE(ROW(INDIRECT(“1:”&4))-1)
转换为:first+TRANSPOSE({1;2;3;4}-1)
得到:first+{0,1,2,3}
这里是公式的关键技巧所在:首先生成一个单列数组,该数组由0至3(即数值范围的最大间隔)组成,然后将其转置为单行数组{0,1,2,3}。接着,将该数组与first生成的数组({“1 ”;”4 ”;”9”;”10 ”;”13 ”;”21”})相加。因为这两个相加的数组正交,一个6行1列的数组加上一个1行4列的数组,结果是一个6行4列的数组,有24个值。
这样,上面的部分公式转换为:{“1 ”;”4 ”;”9”;”10 ”;”13 ”;”21”}+{0,1,2,3}
结果为:{1,2,3,4;4,5,6,7;9,10,11,12;10,11,12,13;13,14,15,16;21,22,23,24}
这个数组包含我们想要的数值,但是也包含一些我们不想要的值。其实,之所以生成4列数组,是为了确保能够添加足够数量的整数,因为A1:A6中最大的间隔范围就是4个整数。
要去除不需要的数值,只需将上面数组中的每个值与last生成的数组相比较,(last数组生成的值为A1:A6中每个数值范围的上限)。例如对于上面数组中的第4行{10,11,12,13},在last数组中对应的值是11,因此剔除12和13,只保留10和11。公式中的比较部分为:
IF(first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1)>–last,””
转换为:IF({1,2,3,4;4,5,6,7;9,10,11,12;10,11,12,13;13,14,15,16;21,22,23,24}>{2;6;9;11;16;21},””
Excel对公式中生成的两个数组在相同行中进行比较,例如,左边数组第2行的值{4,5,6,7}与右边数组第2行的值6进行比较、左边数组第5行的值{13,14,15,16}与右边数组第5行的值16进行比较,依此类推。得到的结果为:
IF({FALSE,FALSE,TRUE,TRUE;FALSE,FALSE,FALSE,TRUE;FALSE,TRUE,TRUE,TRUE;FALSE,FALSE,TRUE,TRUE;FALSE,FALSE,FALSE,FALSE;FALSE,TRUE,TRUE,TRUE},””
由上述的推导可知,公式中的IF语句:
IF(first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1)>–last,””,first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1))
可变为:
IF({FALSE,FALSE,TRUE,TRUE;FALSE,FALSE,FALSE,TRUE;FALSE,TRUE,TRUE,TRUE;FALSE,FALSE,TRUE,TRUE;FALSE,FALSE,FALSE,FALSE;FALSE,TRUE,TRUE,TRUE},””,{1,2,3,4;4,5,6,7;9,10,11,12;10,11,12,13;13,14,15,16;21,22,23,24})
转换为:{1,2,””,””;4,5,6,””;9,””,””,””;10,11,””,””;13,14,15,16;21,””,””,””}
此外,公式中的:ROWS($D$1:$D1)
随着向下复制,得到1、2、3…等数字。
综上,在单元格D1中原来的公式:
=IF(ROWS($D$1:$D1)>SUM(last-first+1),””,SMALL(IF(first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1)>–last,””,first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))-1)),ROWS($D$1:$D1)))
转换为:=IF(1>13,””,SMALL({1,2,””,””;4,5,6,””;9,””,””,””;10,11,””,””;13,14,15,16;21,””,””,””}, 1))
结果是:1
对于单元格D2中的公式转换为:=IF(2>13,””,SMALL({1,2,””,””;4,5,6,””;9,””,””,””;10,11,””,””;13,14,15,16;21,””,””,””}, 2))
结果是:2
对于单元格D3中的公式转换为:=IF(3>13,””,SMALL({1,2,””,””;4,5,6,””;9,””,””,””;10,11,””,””;13,14,15,16;21,””,””,””}, 3))
结果是:4
…… 依此类推。


猜你喜欢
- WPS怎么编辑公式?wps中需要插入公式,该怎么编辑公式呢?下面我们就来看看WPS公式的输入方法,很简单,需要的朋友可以参考下wps中想要编
- 在 Excel 2010 中输入函数的方式比 Excel 2003 或更早版本方便得多,因为 Excel 2010 支持函数自动弹出列表的输
- 在Excel2007中,我们可以将经使常用的命令放入快速访问工具栏中,这样可以在使用中快速执行这些命令,避免在功能区选项卡中来回切换以节约时
- 切换选项卡到视图,然后切换Word选项卡到邮件,然后点击保存,现有的素材仅仅是一个全公司员工的基础信息表格,继续操作, 这时。分别制作成根据
- 普通窗口: 特大窗口: 标准状态条: 目前搜狗输入法支持的外观
- 如果我们使用的计算机安装的操作系统是win10,一些合作伙伴希望启动该系统内置的新功能夜间模式,但发现win10夜间模式无效,无法启动。在这
- 数字风格(小键盘)详细说明(红色字的重要请记住):隐藏、显示、中英切换:/上一页、退格:-下一页、进入选字:+编码: 1 ~ 5选字: 1
- 您是否担心您的计算机可能暴露于病毒并由于长时间使用而导致系统崩溃?尽管现在重新安装系统是一个相对简单的问题,但是在这种情况下,有一种更简单的
- 一直以来,虾米音乐都深受大家的欢迎,它拥有海量高品质音乐,同时支持本地音乐和在线音乐播放等,并且还可以与朋友们分享音乐。那么,虾米音乐怎么分
- 像我们这些经常要和文件打交道的,数量一多,就会发现很多的操作都在重复,又超级浪费时间,而FilePane只需要你简单拖拽就可以快速的管理文件
- 腾讯TIM如何卸载?腾讯TIM是轻聊版的QQ,用久了就会发现功能没有QQ全面,就想卸载掉,要怎么卸载呢,下面就给大家分享具体步骤。方法一:1
- 迷城重生中有着多一些模拟现实的设定,季节有着一年四季的变换,温度会随着天气的变化而变化,你需要根据游戏内环境的变化而做出相应的决策。游戏时间
- 很多小伙伴想换一个合适的内存,但是对于价格不是很了解,现在一般都是4G的内存条,那么价格一般是多少呢?下面一起来看看具体的介绍吧。 电脑内存
- 不少人办公,采用原始的一些方法,比如插入数学公式,要么直接进入公式编辑器编辑,要么按照原始的路径一步步去插入,要是公式稍微多一点,就非常浪费
- wps文档插入页眉和页脚的,你知道怎么做吗?对于常用wps的朋友再熟悉不过了,但是对于大多数人来说还是不太懂,下面小编就为你介绍wps怎么插
- 使用win10系统想要把整个盘符隐藏掉,但是不知道怎么隐藏盘符,那么win10系统怎么隐藏盘符呢?今天为大家分享win10隐藏盘符的操作方法
- Word中“标尺”工具的作用非常大,也许有人经常用它,也许很少有人用到。有了标尺我们可以轻松的调整边距、改变段落的缩进值、设置行距、表格的行
- 浏览器战争永远不会结束,无论我们对所有主要浏览器进行多少次比较以确定获胜者,答案始终是相同的:了解每种浏览器提供的功能并使用最适合您自己需求
- excel表格中怎么清除下拉列表选项?excel下拉列表中的选项想全部清除,该怎么办呢?下面我们就来看看excel清除下拉列表选项的全部教程
- 我们在使用word文档编辑文件的时候,有时候会发现左右两侧的文字对不齐,看上去不是很美观,编辑好文档内容后,使用两端对齐方式可以让文档更加整