如何在 Excel 中找到 3 列中的共同值?
在 Excel 中处理数据时,通常需要比较列表以识别共享或重复的条目。虽然比较两列以找到共同值是一个常见任务,但有时你需要确定哪些值同时出现在三列中。例如,在合并调查数据、合并销售记录或分析多个列表中的重复条目时,准确提取所有三列中存在的项目集非常重要,如下图所示。本文介绍了几种实用的方法来解决 Excel 中的这个问题,让你能够高效可靠地定位三列中的共同值——无论你更喜欢使用公式还是 VBA。
使用数组公式查找 3 列中的共同值
要查找并提取三列中的共同值,可以使用设计用于搜索所有选定范围内出现项的数组公式。这在你不希望依赖额外的 Excel 插件或外部工具的数据集中特别有用。
在你想显示第一个共同值的空白单元格中输入此数组公式:
=LOOKUP("zzz",CHOOSE({1,2},"",INDEX(A$2:A$10,MATCH(0,COUNTIF(E$1:E1,A$2:A$10)+IF(IF(COUNTIF(B$2:B$8,A$2:A$10)>0,1,0)+IF(COUNTIF(C$2:C$9,A$2:A$10)>0,1,0)=2,0,1),0))))
如何使用此数组公式:
- 在所选单元格中输入公式后,按 Shift + Ctrl + Enter(不仅仅是 Enter)。Excel 将用大括号将公式括起来,表示这是一个数组公式。
- 将公式向下拖动直到出现空白单元格。这将列出三列共享的所有值,空白单元格表示不再有匹配项。
注意事项和参数说明:
- 如果你偏爱不同的数组公式,这个公式也会返回所有三列中存在的唯一值:
再次提醒,记得按 Shift + Ctrl + Enter 在输入或粘贴公式后。=INDEX($A$2:$A$10, MATCH(0, COUNTIF($E$1:E1, $A$2:$A$10)+IF(IF(COUNTIF($B$2:$B$8, $A$2:$A$10)>0,1,0)+IF(COUNTIF($C$2:$C$9, $A$2:$A$10)>0,1,0)=2,0,1),0))
- 在这些公式中:
- A2:A10, B2:B8, C2:C9 是你要比较的三列中的数据区域。
- E1 指的是公式开始位置上方的单元格(用于排除逻辑)。调整单元格引用以匹配你的实际数据区域和你希望结果出现的位置。
- 这些方法适用于中等大小的数据集,但由于数组公式的计算需求,在非常大的数据量上可能会变慢。
- 注意避免中途调整源区域,因为这可能导致结果不准确或公式错误。
- 如果结果包含空白行,这意味着所有共同值都已提取,其余单元格没有进一步交集。

使用 Kutools AI 解锁 Excel 魔法
- 智能执行:执行单元格操作、分析数据和创建图表——所有这些都由简单命令驱动。
- 自定义公式:生成量身定制的公式,优化您的工作流程。
- VBA 编码:轻松编写和实现 VBA 代码。
- 公式解释:轻松理解复杂公式。
- 文本翻译:打破电子表格中的语言障碍。
VBA 宏提取三列中都存在的值
如果你更喜欢不需要输入或复制复杂公式的自动化方法,可以使用 Excel VBA 循环遍历你的数据,并仅输出三列中都存在的值。这种方法对于非常大的数据集或动态范围特别有用,因为 VBA 在处理重复任务和自定义条件时效率更高。
1. 单击 开发工具 > Visual Basic 打开 VBA 编辑器(如果看不到“开发工具”选项卡,可以通过 文件 > 选项 > 自定义功能区 启用它)
2. 在 VBA 编辑器中,单击 插入 > 模块 创建一个新模块。然后将以下代码粘贴到模块窗口中:
Sub FindCommonValuesThreeColumns()
Dim dict1 As Object
Dim dict2 As Object
Dim dict3 As Object
Dim resultDict As Object
Dim rngA As Range
Dim rngB As Range
Dim rngC As Range
Dim cell As Range
Dim outputRow As Long
Dim key As Variant
On Error Resume Next
Set dict1 = CreateObject("Scripting.Dictionary")
Set dict2 = CreateObject("Scripting.Dictionary")
Set dict3 = CreateObject("Scripting.Dictionary")
Set resultDict = CreateObject("Scripting.Dictionary")
' Prompt the user to select the three column ranges
Set rngA = Application.InputBox("Select the first column range", "KutoolsforExcel", Selection.Address, Type:=8)
Set rngB = Application.InputBox("Select the second column range", "KutoolsforExcel", Selection.Address, Type:=8)
Set rngC = Application.InputBox("Select the third column range", "KutoolsforExcel", Selection.Address, Type:=8)
' Store all unique values from each column into corresponding dictionaries
For Each cell In rngA
If Not dict1.exists(cell.Value) And cell.Value <> "" Then
dict1.Add cell.Value, 1
End If
Next
For Each cell In rngB
If Not dict2.exists(cell.Value) And cell.Value <> "" Then
dict2.Add cell.Value, 1
End If
Next
For Each cell In rngC
If Not dict3.exists(cell.Value) And cell.Value <> "" Then
dict3.Add cell.Value, 1
End If
Next
' Check which values exist in all three dictionaries
For Each key In dict1.keys
If dict2.exists(key) And dict3.exists(key) Then
resultDict.Add key, 1
End If
Next
' Output result to next empty column on the active sheet
outputRow = 1
For Each key In resultDict.keys
Cells(outputRow, Columns.Count).End(xlToLeft).Offset(0, 1).Value = key
outputRow = outputRow + 1
Next
MsgBox "Common values extracted next to your data.", vbInformation, "KutoolsforExcel"
End Sub
3. 在 VBA 窗口中,选择模块后,按 F5 或单击 运行(▶)按钮执行代码。系统会依次提示你选择要比较的三个列范围。在每次提示时,使用鼠标突出显示适当的单元格。
4. 宏将处理你的选择,并将三列中都存在的所有值输出到当前数据集右侧的下一个空列中,从第一行开始。
这种方法在处理大型或动态数据集时非常高效,并且通过复制字典逻辑可以轻松扩展到四列或更多列。始终记住在运行宏之前保存工作簿,因为未保存的更改无法撤销。
最佳Office办公效率工具
🤖 | Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数…… |
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入…… | |
高级LOOKUP:多条件VLookup|多值VLookup|多表查找|模糊查找…… | |
高级下拉列表:快速创建下拉列表 |依赖下拉列表 | 多选下拉列表…… | |
列管理器: 添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列…… | |
特色功能:网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)…… | |
15大工具集:12项 文本工具(添加文本、删除特定字符等)|50+种 图表 类型(甘特图等)|40+实用 公式(基于生日计算年龄等)|19项 插入工具(插入二维码、从路径插入图片等)|12项 转换工具(小写金额转大写、汇率转换等)|7项 合并与分割工具(高级合并行、分割单元格等)| …… |
通过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和PowerPoint插件+Office Tab Pro
- 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
- 协同更高效——提升Office应用间的整体工作效率
- 30天全功能试用——无需注册,无需信用卡
- 超高性价比——比单独购买更实惠