复杂的EXCEL IF公式或VBA

我有这个数据集:

92127 96001-1 94533-1 95630 95677 95630 

我需要这个输出

 92127-1 95630-1 95677-1 95630-2 

这里是逻辑:

如果这个列中不存在92127 ,那么应该是92127-1 ; 然而,如果它存在,那么应该是92127-(这里最大的数字是+1),所以如果最大的是92127-5,那么它应该是92127-6

有可能把它变成一个公式吗?

这是我的:

 =IF(LEN(A2)>5,A2,A2&"-"&SUMPRODUCT(--(LEFT($A$2:$A2,5)=LEFT(A2,5)))) 

A2:A7

 92127 96001-1 94533-1 95630 95677 95630 

B2:B7(你把公式放在哪里)

 92127-1 96001-1 94533-1 95630-1 95677-1 95630-2 

编辑:上面假定五位数字前导数字的第一个实例将不具有-n,并使用该五位数字前导数字的计数将-n追加到后续实例。 但是,如果95630的第一个实例是95630-2,那么上述失败。 string操作不适用于数组公式,所以我认为唯一的select是使用助手列。 用A2:A7中的数据,

 B2: =IF(ISERR(FIND("-",A2)),A2,LEFT(A2,5)) C2: =IF(ISERR(FIND("-",A2)),0,MID(A2,FIND("-",A2)+1,LEN(A2))) D2: =B2&"-"&IF(ISERR(FIND("-",A2)),MAX(($B$2:$B$7=B2)*($C$2:$C$7))+1,C2) 

并填入第7行。B2和C2将数字分成五个前导数字和-n后缀(如果有的话)。 如果没有-n,则返回一个0.由于它是一个数组公式,所以使用Control + Shift + EnterinputD2。 它会find当前五位数字的最大值-n,并加上一个数字,并将其附加到五位前面的数字中。

帮助列使其更加繁琐,但我找不到更好的方法。

既然你想保持'-1'在那里(根据评论),这应该工作:

假设“存在”在单元格A2:An中,则此公式进入B2,并可以复制到Bn。

 =LEFT(A2,5)&TEXT(COUNTIF(A$2:A2,LEFT(A2,5))+IF(ISERROR(VALUE(MID(A2,7,1))),0,VALUE(MID(A2,7,1))),"-0;;") 

我的结果是这样的:

现有

 92127 96001-1 94533-1 95630 95677 95630 

 92127-1 96001-1 94533-1 95630-1 95677-1 95630-2