ad

excel公式教程:拆分连字符分隔的数字并放置在同一列中-英雄云拓展知识分享

匿名投稿 2834 2025-10-21

在单元格区域A1:A6中,有一些数据,有的是单独的数字,有的是由连字符分隔的一组数字,例如13⑴6表示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))⑴)>–last,””,first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))⑴)),ROWS($D$1:$D1)))

excel公式教程:拆分连字符分隔的数字并放置在同一列中-英雄云拓展知识分享

向下拖拉至出现空单元格为止。

公式解析

公式中的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⑵”;”4⑹”;”9”;”10⑴1”;”13⑴6”;”21”},”-“,REPT(“”,5)),5)

转换为:=LEFT(SUBSTITUTE({“1⑵”;”4⑹”;”9”;”10⑴1”;”13⑴6”;”21”},”-“,“     ” ),5)

转换为:=LEFT({“1     2”;”4    6”;”9”;”10     11”;”13     16”;”21”},5)

得到的结果为:={“1    ”;”4    ”;”9”;”10  ”;”13   ”;”21”}

上面公式中的数字5是任意选的,只要能保证将数字挑选出来便可。

对第2个名称: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个值、“4⑹”将返回3个值,依此类推。因此,这种情况下,该数组的和就是我们想要返回的数字的总数:

IF(ROWS($D$1:$D1)>13,””

所以,向下复制公式时,超过13即将返回空值。

下面看看公式中的主要部份:

SMALL(IF(first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))⑴)>–last,””,first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+1))⑴)),ROWS($D$1:$D1))

可以看到,下面的部份出现了2次:first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+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))⑴)

转换为:first+TRANSPOSE({1;2;3;4}⑴)

得到: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))⑴)>–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))⑴)>–last,””,first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+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))⑴)>–last,””,first+TRANSPOSE(ROW(INDIRECT(“1:”&MAX(last-first)+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

…… 依此类推。



选择英雄云云表单=选择更智能的办公工具

>>>>🚀🌟 点击注册 免费试用 更高级的-英雄云企业级云表单 🌟🚀 😃👉🌐>>>>

在现代企业管理中,数据的高效管理和处理至关重要。随着信息技术的不断发展,英雄云云表单已经成为了提高数据录入、管理和分析效率的不可或缺的工具。让我们来深入探讨英雄云-云表单的几大优势。

基础字段:多样性满足业务需求

英雄云云表单中包括了各种基础字段,如单行文本多行文本数字输入框单选框复选框下拉框下拉复选框日期时间分割线等。这些字段的多样性使用户可以根据具体的业务需求,轻松进行文本、数据和时间信息的录入或修改。例如,您可以使用单行文本字段录入员工姓名、产品型号等,或者使用下拉框进行多选,根据不同情况选择更加方便的字段类型。

高级字段:提升工作效率

英雄云云表单还提供了高级字段,如地址图片附件手写签名手机子表关联数据关联查询以及流水号。这些高级字段在基础字段的基础上升级,可帮助用户完成一些琐碎的工作。例如,使用地址字段可以避免逐字打字,而流水号字段可以自动生成规律性的编号,非常适用于合同编号生成等场景。

部门成员字段:精确管理与通讯录的关联

英雄云的部门成员字段允许企业对各个部门的成员进行精确管理。用户可以通过部门成员字段获取通讯录中的部门成员信息,应用于记录报销人、报销部门等场景。这些成员字段还细分为成员单选成员多选,可根据具体需求在通讯录中选择一个或多个成员。

聚合表:数据处理更智能

英雄云聚合表功能用于对已存在的表单数据进行聚合计算,从而得到一张聚合表,后续其他表单可调用聚合表进行数据联动、关联查询和关联数据等操作完成数据处理。这一功能可应用于多种场景,如进销存管理、财务管理和门店零售管理等,帮助企业完成数据处理,提高工作效率。

表单权限设置:灵活管理数据访问

英雄云的表单权限设置允许用户根据企业的具体需求管理表单的访问和操作权限。用户可以根据系统权限或自定义权限对不同成员或团队进行权限设置,以确保数据的安全和合规性。这一功能使企业能够根据变化的业务需求和团队结构,实时调整权限设置。

自定义打印模板:文档输出更便捷

英雄云云表单支持自定义打印模板,可将表单数据转换为可打印的Word文档。用户可以根据自己的需求进行排版和编辑,将产品规格说明书等文档轻松生成。这一功能提供了一种标准化的文档输出方式,简化了信息整理的过程。

综合来看,选择英雄云云表单意味着选择更智能、更灵活、更高效的数据管理工具。无论是提高工作效率,精确管理数据,还是实现数据处理,英雄云云表单都能满足您的多样化需求,助力您的业务发展。

如果您正在寻找一款强大的云表单工具,不妨考虑英雄云,它将为您带来更多的便捷和智能,助您事半功倍。


免责声明:

本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿等来源。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。

上一篇:Excel中怎样查找相同数据并标记?-英雄云拓展知识分享
下一篇:在Excel中如何让文字竖排?-英雄云拓展知识分享
相关文章
×