如何在Excel中拼接DJ-DM列内容并排除null值与no单元格?
实现思路与具体方法
核心逻辑:先过滤掉值为null或"no"的单元格/字段,再将剩余有效内容用指定分隔符拼接。以下分常见工具场景给出具体实现:
Excel/Google Sheets 场景
方法1:用内置TEXTJOIN函数(推荐)
适用于Excel 2019及以后版本、Google Sheets,无需复杂操作:
=TEXTJOIN(", ", TRUE, IF((DJ1:DM1<>"no")*(DJ1:DM1<>""), DJ1:DM1, ""))
- 说明:
TEXTJOIN的第二个参数TRUE表示自动忽略空值;IF函数筛选出既不是"no"也不为空的单元格,不符合条件的返回空文本,最终由TEXTJOIN完成拼接;- Excel中需按
Ctrl+Shift+Enter作为数组公式执行,Google Sheets直接回车即可。
方法2:自定义VBA函数(旧版Excel兼容)
如果是Excel 2016及更早版本,可编写VBA自定义函数:
Function JoinNonNo(rng As Range, delimiter As String) As String Dim cell As Range Dim result As String For Each cell In rng ' 排除空值和"no"(不区分大小写) If Not IsEmpty(cell) And UCase(cell.Value) <> "NO" Then If result <> "" Then result = result & delimiter result = result & cell.Value End If Next cell JoinNonNo = result End Function
使用方式:在目标单元格输入=JoinNonNo(DJ1:DM1, ", "),第一个参数是要拼接的单元格范围,第二个是分隔符。
SQL 场景
MySQL 实现
利用CONCAT_WS函数自动忽略null的特性,将"no"转为null即可:
SELECT CONCAT_WS(', ', IF(DJ = 'no', NULL, DJ), IF(DK = 'no', NULL, DK), IF(DL = 'no', NULL, DL), IF(DM = 'no', NULL, DM) ) AS DN FROM your_table;
SQL Server 实现
通过IIF筛选有效字段,结合STUFF去除多余的前置分隔符:
SELECT STUFF( CONCAT( IIF(DJ IS NOT NULL AND DJ <> 'no', ', ' + DJ, ''), IIF(DK IS NOT NULL AND DK <> 'no', ', ' + DK, ''), IIF(DL IS NOT NULL AND DL <> 'no', ', ' + DL, ''), IIF(DM IS NOT NULL AND DM <> 'no', ', ' + DM, '') ), 1, 2, '' ) AS DN FROM your_table;
内容的提问来源于stack exchange,提问作者Tricky5
相关产品推荐
相关产品推荐

