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

时间:2017-08-28 20:00:54

标签: excel unique substitution excel-2016 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

为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:1)

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

=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)

或者您可以以数组形式使用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是更好的选择。