You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:31:04