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

如何去除列中逗号分隔值的重复项并保持原有顺序?

去除逗号分隔值的重复项并保留原有顺序

问题示例

输入数据

列 
------------------
e,f,g,a,b,b,c,c,d
x,x,y,y,z,z
r,s,t,r,s,t,z

期望输出

e,f,g,a,b,c,d
x,y,z
r,s,t,z

解决方案

1. Python 实现

通过遍历拆分后的元素,用列表记录已出现项,仅保留首次出现的值,最后重新拼接为字符串:

# 示例数据
data = [
    "e,f,g,a,b,b,c,c,d",
    "x,x,y,y,z,z",
    "r,s,t,r,s,t,z"
]

def remove_duplicates_keep_order(s):
    seen = []
    for item in s.split(','):
        if item not in seen:
            seen.append(item)
    return ','.join(seen)

# 处理每一行并输出
for line in data:
    print(remove_duplicates_keep_order(line))

2. Excel VBA 自定义函数

如果需要在Excel中处理,可以创建自定义函数:

  1. 按 Alt + F11 打开VBA编辑器,插入新模块
  2. 粘贴以下代码:
Function RemoveDupesKeepOrder(inputStr As String, delimiter As String) As String
    Dim arr() As String
    Dim seen As Object
    Dim i As Integer
    Dim result As String
    
    Set seen = CreateObject("Scripting.Dictionary")
    arr = Split(inputStr, delimiter)
    
    For i = LBound(arr) To UBound(arr)
        If Not seen.Exists(arr(i)) Then
            seen.Add arr(i), arr(i)
            result = result & arr(i) & delimiter
        End If
    Next i
    
    ' 移除末尾多余的分隔符
    If Len(result) > 0 Then
        result = Left(result, Len(result) - Len(delimiter))
    End If
    
    RemoveDupesKeepOrder = result
End Function
  1. 在目标单元格中调用函数,例如数据在A2单元格时,输入 =RemoveDupesKeepOrder(A2, ",")

3. PowerShell 实现

利用哈希表跟踪已出现元素,筛选出首次出现的值:

# 示例数据
$data = @(
    "e,f,g,a,b,b,c,c,d",
    "x,x,y,y,z,z",
    "r,s,t,r,s,t,z"
)

foreach ($line in $data) {
    $seen = @{}
    $result = @()
    foreach ($item in $line -split ',') {
        if (-not $seen.ContainsKey($item)) {
            $seen[$item] = $true
            $result += $item
        }
    }
    $result -join ','
}

内容的提问来源于stack exchange,提问作者StackFeel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:27:35