Isz*_*szi 9 worksheet-function microsoft-excel microsoft-excel-2010
要连接某个四个单元格,我会使用:
=CONCATENATE(A2,",",C2",",D2,",",F2)
Run Code Online (Sandbox Code Playgroud)
这将使...
会导致Matthew,Mark,Luke,John.
但是我们遇到了类似的问题......
这将导致Jesus,,Mary,Joseph.
在这里,不需要额外的逗号。有没有办法优雅地处理这个问题,以便所有非空白单元格都包含在逗号分隔列表中,同时避免在某些单元格为空白时添加不必要的逗号?
当然,这可以通过相当数量的嵌套 IF 来完成,但如果可能的话,我真的想避免这种情况。可以使用本机 Excel 函数或数组公式来完成吗?或者人们必须诉诸VB Script来做这样的事情吗?
小智 12
在 Excel 2016 中,您可以使用TEXTJOIN:
=TEXTJOIN(delimiter,ignore_blanks?,values_to_be_joined)
Run Code Online (Sandbox Code Playgroud)
所以,在你的情况下,你会使用这个公式:
=TEXTJOIN(",",TRUE,A2,C2,D2,F2)
Run Code Online (Sandbox Code Playgroud)
正如你所说,嵌套 IF 不是你的菜,但如果没有@nixda 指出的 VBA 解决方案,我看不出有任何其他方法可以做到这一点。
对于我提出的解决方案,我假设您的数据如下所示:
| A |
-+---------+
1| Matthew |
2| Mark |
3| Luke |
4| John |
Run Code Online (Sandbox Code Playgroud)
我有一个解决方案,可以满足您的要求,但被“埋葬”了。在阅读了您在最近的回答中留下的评论(特别是关于您总是填充第一个单元格这一事实的评论)后,我明白了这一点。这允许不存在嵌套,因为第一个条件(在下面的推理中)总是错误的。
=CONCATENATE(A1;IF(ISBLANK(A2);"";"," & A2);IF(ISBLANK(A3);"";"," & A3);IF(ISBLANK(A4);"";"," & A4))
Run Code Online (Sandbox Code Playgroud)
CONCATENATE正如@Scott 在回答中指出的那样,您始终可以删除公式并用与号替换公式。在这一点上,它只是一个外观问题。
=A1 & IF(ISBLANK(A2);"";"," & A2) & IF(ISBLANK(A3);"";"," & A3) & IF(ISBLANK(A4);"";"," & A4)
第一个值总是被写入,所以唯一需要的是检查活动单元格是否为空白,如果不是,则在其后面添加一个逗号。
这样你就不需要任何辅助单元,它都在一个函数中。
我还写了一个更详细的版本,因为我假设了通用术语(即可能存在您没有填充第一个单元格的情况)。它只需要2层嵌套,因为最多需要检查3个条件:
假设您从头开始推理,所需的格式如下:
因此,这是我使用的公式。我假设所有数据都在一列中,在一行中使用更改一些公式和范围。
=CONCATENATE(A1;IF(ROWS(A1:A1)=COUNTBLANK(A1:A1);A2; IF(ISBLANK(A2);"";"," & A2));IF(ROWS(A1:A2)=COUNTBLANK(A1:A2);A3; IF(ISBLANK(A3);"";"," & A3));IF(ROWS(A1:A3)=COUNTBLANK(A1:A3);A4; IF(ISBLANK(A4);"";"," & A4)))
Run Code Online (Sandbox Code Playgroud)
ROWS计算任何给定间隔中的行数。如果它等于活动单元格后面的空白单元格数,则表示活动单元格后面的所有单元格都是空白的,因此前面不应放置逗号。
ROWS和COUNTBLANK中的间隔是活动单元格后面的单元格。
| 归档时间: |
|
| 查看次数: |
56706 次 |
| 最近记录: |