替代textjoin公式不适用于最终单元格

我想在Excel中连接单元格后删除唯一的值。 这是一个电话号码列表,我把它们合并成一个单元格后,用逗号分隔。 我正在使用这个公式:

=SUBSTITUTE(TEXTJOIN(",",TRUE,$I$19:$I$28),I19&",","") 

无论出于何种原因,它适用于除最后一个之外的范围内的每个细胞; 这意味着最后的电话号码仍然显示在最后的列表中。 例如,如果我有号码12345 23456 34567 and 45678 ,它应该是这样的:

 23456,34567,45678 12345,34567,45678 12345,23456,45678 12345,23456,34567 

但它是这样出来的

 23456,34567,45678 12345,34567,45678 12345,23456,45678 12345,23456,34567,45678 

任何想法,为什么这可能会发生?

它正在寻找45678,replace为"" 。 没有,最后。 所以我们强制一个,然后在最后删除它:

 =LEFT(SUBSTITUTE(TEXTJOIN(",",TRUE,$I$19:$I$28) & ",",I19&",",""),LEN(SUBSTITUTE(TEXTJOIN(",",TRUE,$I$19:$I$28) & ",",I19&",",""))-1) 

或者把逗号放在前面并使用MID:

 =MID(SUBSTITUTE(","&TEXTJOIN(",",TRUE,$I$19:$I$28),"," &I19,""),2,999) 

或者你可以用数组forms使用TEXTJOIN:

 =TEXTJOIN(",",TRUE,IF((ROW($I$19:$I$28)<>ROW(19:19))*($I$19:$I$28<>""),$I$19:$I$28,"")) 

作为一个数组,当退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter来确认。 如果正确完成,则Excel将在公式周围放置{}

然后像第一个那样复制/拖动它。


第二,使用MID是更好的select。