跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何在Excel中连接唯一值?

Author Xiaoyang Last modified

在处理电子表格时,经常会遇到需要从一列中仅合并(连接)唯一值,或者编制汇总唯一项及其相应记录的列表的情况。处理重复项并呈现汇总信息不仅能使您的数据更加整洁,还能使报告更清晰、更有见地。在Excel中,有多种实用的方法可以实现这些目标,从使用内置函数到利用高级插件或自定义代码不等。本教程详细探讨了多种连接唯一值以及列出唯一项及其相关数据的方法。所涵盖的解决方案适用于不同的Excel版本和用户偏好,帮助您为自己的场景选择最佳方法。

仅连接列中的唯一值

列出唯一值并连接相应的值


仅连接列中的唯一值

在Excel数据分析过程中,一个常见的任务是将某一列中的不同条目合并到一个单元格中。这对于创建汇总报告、避免列表中的重复值或将数据准备为进一步处理特别有用。方法的选择取决于您的Excel版本、数据集大小以及您对公式或代码的熟悉程度。以下方法满足不同的需求,突出每种方法的注意事项,并提供实用技巧以确保正确执行。

方法1:使用TEXTJOIN和UNIQUE函数

对于Excel 365和Excel 2021用户,TEXTJOIN和UNIQUE函数的引入使得从列中合并唯一值变得既简单又灵活。

当您的数据列是连续的并且您想快速将所有唯一项目整合到一个单元格中时,此解决方案是最好的。它自动消除重复项,易于审核,并允许您根据需要更改范围或分隔符。但是,请注意,此方法仅在最新版本的Excel中可用;旧版本不支持UNIQUE函数。

在要显示结果的单元格中输入以下公式(假设您的数据在A2:A18单元格中):

=TEXTJOIN(", ", TRUE, UNIQUE(A2:A18))

 apply TEXTJOIN and UNIQUE functions to concatenate unique values

此公式的解释如下:
  • UNIQUE(A2:A18) 过滤掉重复项并仅返回A2:A18范围内的唯一值。
  • TEXTJOIN(", ", TRUE, ...) 将这些唯一值组合(连接)到一个单元格中,用逗号和空格分隔。TRUE参数确保在连接过程中忽略任何空白单元格。

有用的提示和故障排除:

  • 确保您的Excel版本支持UNIQUE和TEXTJOIN函数。如果看到#NAME?错误,可能是您正在使用旧版本。
  • TEXTJOIN中使用的分隔符可以更改为任意您喜欢的内容,例如“; ”或“|”。
  • 如果您在原始范围内添加或删除数据,公式会自动更新。
  • 为了避免无意的多余空格或分隔符,请仔细检查公式中的分隔符参数。

方法2:使用Kutools AI助手

当您需要一种更快、全自动的方式来连接唯一值——无需编写公式——Kutools for Excel的“AI助手”工具提供了一个实用的解决方案,为各级别用户节省时间。这种方法特别适合不熟悉Excel高级公式或数据频繁变化需要重复任务的用户。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

安装Kutools for Excel后,通过点击“Kutools” > “AI助手”打开“KUTOOLS AI助手”窗格来访问此功能。

  1. 选择包含要合并到单个单元格中的值的单元格,确保选择与预期数据匹配。
  2. 在聊天框中描述您的需求。例如,您可以输入:
    从选定范围连接唯一值并用逗号分隔,将合并结果放入C2单元格中
  3. Enter键 或点击 “发送” 按钮。AI会分析您的请求并在处理完毕后,按下“执行”让Kutools进行操作。结果将如描述所示返回。

注意事项和提示:

  • 检查是否运行的是最新版本的Kutools以访问所有AI功能。
  • 为了让结果更佳,在文本命令中具体说明;提及分隔符和目标单元格。
  • Kutools AI对于大范围或需要在各种数据集上重复的工作流尤其高效。

方法3:使用用户定义函数

对于需要高级灵活性、自定义分隔符或希望在多个工作簿中重复使用的用户,使用VBA编码用户定义函数(UDF)是一种有效方式,能够自动连接唯一值。此VBA解决方案兼容所有Excel版本,并不受新功能可用性的限制。

  • 您应该在工作簿中启用宏。
  • 将文件保存为“启用宏”(.xlsm),以便将来继续使用此VBA代码。
  • 建议在运行新代码之前定期备份您的工作簿。

1. 按住ALT + F11打开Microsoft Visual Basic for Applications窗口。

2. 在VBA窗口中,点击插入 > 模块,然后复制并粘贴以下代码:

VBA代码:将唯一值连接到单个单元格:

Function ConcatUniq(xRg As Range, xChar As String) As String
'updateby Extendoffice
    Dim xCell As Range
    Dim xDic As Object
    Set xDic = CreateObject("Scripting.Dictionary")
    For Each xCell In xRg
        xDic(xCell.Value) = Empty
    Next
    ConcatUniq = Join$(xDic.Keys, xChar)
    Set xDic = Nothing
End Function

3. 返回到您的工作表,并在空白单元格(例如C2)中输入以下公式:

=ConcatUniq(A2:A18,",")

Enter确认。该单元格将显示指定范围内的所有唯一值,用逗号分隔。

 concatenate unique values with vba code

  • 如果您的范围不同,请相应调整A2:A18
  • 如果需要不同的分隔符,请在公式中将","替换为您喜欢的符号(例如“;”或|)。
  • 如果遇到#NAME?错误,请检查是否启用了宏,并且UDF名称完全匹配。

提示:要在其他工作簿中重用此函数,请将VBA代码也复制到它们的模块中。


方法4:使用高级Excel公式(替代方案)

在UNIQUE函数不可用的环境中(例如,在Excel 2016或Excel 2019中),您仍然可以使用经典的IFCOUNTIFTEXTJOIN函数数组公式的更复杂组合来连接唯一值。这种方法可行,但最适合小型数据集,因为它计算开销较大。

1. 在目标单元格(例如C2)中输入以下数组公式(输入后按Ctrl+Shift+Enter而不是仅仅按Enter):

=TEXTJOIN(", ", TRUE, IF(MATCH(A2:A18, A2:A18,0) = ROW(A2:A18) - MIN(ROW(A2:A18)) +1, A2:A18, ""))

2. 如果您看到公式周围出现花括号{},则表示已正确将其输入为数组公式。该公式将返回来自范围A2:A18的连接唯一值,用逗号分隔。

注意:此方法要求您调整范围以匹配您的数据。对于非常大的范围,计算时间可能会增加。如果不熟悉数组公式,考虑尝试上述VBA或插件解决方案。


列出唯一值并连接相应的值

在数据报告中,您可能不仅希望从一列中提取唯一值,还希望聚合或合并另一列中的相应条目。例如,汇总每个销售人员销售的所有产品,或编译链接到同一ID的所有条目。选择正确的方法取决于数据的复杂性以及自动化、易用性或兼容性是否是您的优先事项。

方法1:使用TEXTJOIN和UNIQUE函数

当您使用Excel 365或Excel 2021时,可以结合使用UNIQUE和FILTER函数与TEXTJOIN以实现稳健、完全基于公式的解决方案。这种方法非常适合总结数据,其中一个值可能涉及多个记录,并且您希望得到这些相关记录的分隔符列表。

1. 在空白列中,输入以下公式以列出A列中的所有唯一值:

=UNIQUE(A2:A17)

 List unique values with formula

2. 现在,为了连接B列中每个唯一条目的相应值,在紧挨着唯一值的下一列(例如,如果您的唯一值从D2开始,则在E2)中输入此公式,并根据需要向下拖动:

=TEXTJOIN(", ", TRUE, FILTER($B$2:$B$17, $A$2:$A$17 =D2))

 List unique and concatenate matched values with formula

此公式的解释如下:
  • UNIQUE(A2:A17) 从A列创建唯一项的数组。
  • FILTER(B2:B17, A2:A17 = D2) 生成一个数组,包含D2中每个唯一值对应的所有B列的值。
  • TEXTJOIN(", ", TRUE, ...) 将这些对应的值连接起来,用逗号分隔。
  • 如果需要不同的分隔符,请相应更改TEXTJOIN中的", "
  • 为避免错误,请确保公式中的范围长度相等,并且FILTER不会因缺少匹配项而返回错误。
  • 随着数据的变化,这种方法会自动更新结果,使其适合动态汇总表。

方法2:使用Kutools for Excel

Kutools for Excel具有“高级合并行”工具,专为按唯一值分组数据并将相应值与您选择的分隔符合并而设计。这适合希望使用图形化解决方案且不擅长编写公式或代码的用户。在处理大数据集或需要频繁重新分组时(例如周期性报告或持续的数据维护),它特别有价值。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

在进行更改之前,最好将原始数据备份到另一个位置。然后按照以下步骤操作:

  • 选择您希望组织的数据范围。
  • 导航至 “Kutools” > “合并与拆分” > “高级合并行”,如下图所示:
     click Advanced Combine Rows feature of kutools
  • 在弹出的对话框中:
    • 选择要合并的含重复项的列,将其设置为“操作”列中的“主键”。
    • 选择您希望聚合的列(要连接的值);在“操作”下的下拉列表中指定您喜欢的分隔符。
    • 点击确定以执行。
     specify the options in the dialog box

结果:

Kutools将根据您的设置重新组织数据,提取唯一条目并连接所有关联的值。
 List unique and concatenate matched values with kutools

  • 如果出错,使用Excel中的撤销功能(Ctrl+Z)恢复。
  • 该过程适用于可能包含数百或数千条记录的数据集,并支持各种分隔符。

方法3:使用VBA代码

使用VBA脚本可以完全控制如何提取和汇总数据。这种方法兼容所有版本的Excel,特别适合定制工作流、自动化或当UNIQUE或FILTER等功能不可用时。如果您的数据结构经常变化,此VBA解决方案可以轻松适应。

要使用以下代码,只需按照以下步骤操作:

1. 按ALT + F11打开VBA编辑器。

2. 转到插入 > 模块,然后将以下代码粘贴到打开的模块窗口中:

VBA代码:列出唯一值并连接相应的数据

Sub test()
    'updateby Extendoffice
    Dim xRg As Range
    Dim xArr As Variant
    Dim xCell As Range
    Dim xTxt As String
    Dim I As Long
    Dim xDic As Object
    Dim xOutputRg As Range
    On Error Resume Next
    xTxt = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the data range", "Kutools for Excel", xTxt, , , , , 8)
    Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
    If xRg Is Nothing Then Exit Sub
    If xRg.Areas.Count > 1 Then
        MsgBox "Does not support multiple selections", , "Kutools for Excel"
        Exit Sub
    End If
    If xRg.Columns.Count <> 2 Then
        MsgBox "There must be only two columns in the selected range", , "Kutools for Excel"
        Exit Sub
    End If
    Set xOutputRg = Application.InputBox("Please select the output cell", "Kutools for Excel", Type:=8)
    If xOutputRg Is Nothing Then Exit Sub
    xArr = xRg
    Set xDic = CreateObject("Scripting.Dictionary")
    xDic.CompareMode = 1
    For I = 1 To UBound(xArr)
        If Not xDic.Exists(xArr(I, 1)) Then
            xDic.Item(xArr(I, 1)) = xDic.Count + 1
            xArr(xDic.Count, 1) = xArr(I, 1)
            xArr(xDic.Count, 2) = xArr(I, 2)
        Else
            xArr(xDic.Item(xArr(I, 1)), 2) = xArr(xDic.Item(xArr(I, 1)), 2) & "," & xArr(I, 2)
        End If
    Next
    xOutputRg.Resize(xDic.Count, 2).Value = xArr
End Sub

3. 按F5运行脚本。弹出窗口将要求您选择数据范围。确保只选择两列:第一列为唯一值,第二列为相应值。

 vba code to select data range

4. 点击确定,并选择结果表应开始的第一个单元格。

 vba code to select cell to put the result

5. 点击确定后,代码将生成一个仅包含唯一值及其关联连接数据的表格。

 vba code to List unique and concatenate matched values

  • 如果收到关于列数的错误,请检查您的选择是否仅包括两列。
  • 如果您的分隔符需要从逗号更改为其他符号,请根据需要调整xArr(xDic.Item(xArr(I,1)),2) = xArr(xDic.Item(xArr(I,1)),2) & "," & xArr(I,2)这一行代码。
  • 在运行新的VBA脚本之前,始终备份您的文件。

总之,Excel提供了多种连接唯一值和汇总相关数据的方法。现代Excel中的公式方法快速且动态,而VBA和Kutools解决方案提供了更广泛的兼容性和更大的控制力。始终选择适合您的数据规模、Excel版本和首选工作流程的方法。记住在样本数据上测试或备份您的工作,特别是在尝试基于脚本或批处理操作时。欲了解更多Excel指南和高级技巧,请浏览我们的完整教程集合


最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件VLookup|多值VLookup|多表查找|模糊查找……
高级下拉列表快速创建下拉列表 |依赖下拉列表 | 多选下拉列表……
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列……
特色功能网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)……
15大工具集12项 文本工具添加文本删除特定字符等)|50+种 图表 类型甘特图等)|40+实用 公式基于生日计算年龄等)|19项 插入工具插入二维码从路径插入图片等)|12项 转换工具小写金额转大写汇率转换等)|7项 合并与分割工具高级合并行分割单元格等)| ……
Kutools支持多种语言——可选择英语、西班牙语、德语、法语、中文等40多种语言!

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


Office Tab为Office带来多标签界面,让您的工作更加轻松

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠