作业帮 > 综合 > 作业

EXCEL 自动加连字符.如:A1="1,2,3,4,5,6,7,8,9,10,12" 则 B1="1-12"

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/06/06 09:36:58
EXCEL 自动加连字符.如:A1="1,2,3,4,5,6,7,8,9,10,12" 则 B1="1-12"
如:A1="1,2,3,4,5,6,7,8,9,10,12" 则 B1="1-12"
如:A1="1,2,3,4,8,9,10,12" 则 B1="1-4,8-12"
要求公式要有普遍适用性

自己写了一个,能实现,用SUBSTITUTE函数.如果是1-12个数字就要嵌套(12-1)*(12-2)/2=55次.如果是1-13个数字就要嵌套66次,2007好像只能嵌套64次吧.
1-8个数字举例如下:嵌套21次

A列是数字串,B列是转换结果,C,D两列是查表的、(就这样叫吧)
B1公式:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A1,$C$1,$D$1),$C$2,$D$2),$C$3,$D$3),$C$4,$D$4),$C$5,$D$5),$C$6,$D$6),$C$7,$D$7),$C$8,$D$8),$C$9,$D$9),$C$10,$D$10),$C$11,$D$11),$C$12,$D$12),$C$13,$D$13),$C$14,$D$14),$C$15,$D$15),$C$16,$D$16),$C$17,$D$17),$C$18,$D$18),$C$19,$D$19),$C$20,$D$20),$C$21,$D$21),$C$22,$D$22),$C$23,$D$23),$C$24,$D$24),$C$25,$D$25),$C$26,$D$26),$C$27,$D$27),$C$28,$D$28),$C$29,$D$29),$C$30,$D$30),$C$31,$D$31),$C$32,$D$32),$C$33,$D$33),$C$34,$D$34),$C$35,$D$35),$C$36,$D$36)
这大概是用于表示1至12月份吧.我的方法是增加辅助列.


第一步,先将A列的字符串拆为C-N列.
C2=IF(OR(A2="1",A2=1,LEFT(A2,2)="1,"),1,)
D2=IF(OR(A2="2",A2=2,LEFT(A2,2)="2,",ISNUMBER(FIND("2",A2))),2,)
E2=IF(ISERR(FIND(E$1,$A2)),E$1)
将E2公式向右拉到N2

第二步,P-AA列对C-N列进行预处理.
P2=IF(C2,C2&IF(D2,"-",","),"")
Q2=IF(OR(D2=0,AND(C2,E2)),"",Q$1&IF(OR(C2,AND(C2=0,E2=0)),",","-"))
将Q2公式向右拉到Z2
AA2=IF(N2,N2,"")

最后,AB列为结果
AB2=IF(RIGHT(P2&Q2&R2&S2&T2&U2&V2&W2&X2&Y2&Z2&AA2)=",",LEFT(P2&Q2&R2&S2&T2&U2&V2&W2&X2&Y2&Z2&AA2,LEN(P2&Q2&R2&S2&T2&U2&V2&W2&X2&Y2&Z2&AA2)-1),P2&Q2&R2&S2&T2&U2&V2&W2&X2&Y2&Z2&AA2)
再问: 很好,完美实现,非常感谢你; 刚测试出了一点小问题,若A2="12"则结果为2,12,D列的公式不够健壮
再答: D2公式改为: =IF(OR(A2="2",A2=2,LEFT(A2,2)="2,",ISNUMBER(FIND(",2",A2))),2,) FIND的第一个参数加多一个逗号上去。
再问: 对。E2到N2也加逗号吧 E2 =IF(ISERR(FIND(","&E$1,$A2)),,E$1) 其实不是月份,是班级。比如“高一1,2,3,4,6,7,8,10,13,14,15"就要转换成“高一(1-4,6-8,10,13-15)"
再答: 增加辅助列,是为了让思路清晰。 理顺了思路之后,也可以减少辅助列,把公式并在一起,但公式将显得很长,不便于将来维护。 比如我的AB列的公式,显得太长了,增加一列,先返回 =P2&Q2&R2&S2&T2&U2&V2&W2&X2&Y2&Z2&AA2 这样,AB列的公式就简短了很多,也易于理解。