EXCEL 自动加连字符。如: 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的第一个参数加多一个逗号上去。
不够普遍。也谢谢你
=LEFT(A1,1)&"-"&MID(A1,IF(MID(A1,LEN(A1)-1,1)=",",LEN(A1),IF(MID(A1,LEN(A1)-2,1)=",",LEN(A1)-1,"")),IF(MID(A1,LEN(A1)-1,1)=",",1,IF(MID(A1,LEN(A1)-2,1)=",",2,"")))
第二个不会
因为公式不能进行很多个不规则字符连接。你用VBA吧。
漏了。