You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel中通过对比两个工作表数据填充第三个工作表的实现方法咨询

Excel中通过对比两个工作表数据填充第三个工作表的实现方法咨询

嘿,别担心!刚接触Excel遇到这种需求太正常了,完全不是什么 trivial 的事儿~我给你分享几个实用的方法,帮你把这个重复工作自动化,省出不少时间!

方法一:用Excel公式快速实现(适合手动操作,无需编程)

如果你的Excel是365或2021版本,FILTER函数是最方便的选择:
假设你要对比的是Sheet1和Sheet2的A列数据,想把Sheet2里没在Sheet1出现的内容放到Sheet3里,直接在Sheet3的A1单元格输入:

=FILTER(Sheet2!A:A, COUNTIF(Sheet1!A:A, Sheet2!A:A)=0, "无匹配差异数据")
  • 解释一下:FILTER会筛选Sheet2的A列数据,COUNTIF用来统计Sheet1里是否存在当前值,等于0就代表没找到,最后如果没有差异数据会显示"无匹配差异数据"。

如果是旧版Excel(不支持FILTER),可以用数组公式:
在Sheet3的A1输入:

=INDEX(Sheet2!A:A, SMALL(IF(COUNTIF(Sheet1!A:A, Sheet2!A:A)=0, ROW(Sheet2!A:A)), ROW(A1)))

输入完后按 Ctrl+Shift+Enter 触发数组公式,然后下拉填充直到出现#NUM!就可以停止啦。

小提示:如果数据里有多余空格或大小写不一致导致判断错误,可以用TRIM函数处理,比如把公式里的Sheet2!A:A改成TRIM(Sheet2!A:A)Sheet1!A:A改成TRIM(Sheet1!A:A)

方法二:用VBA宏自动化重复操作(适合频繁使用的场景)

如果你需要经常做这个对比,写个简单的宏可以一键搞定:

  1. Alt+F11打开VBA编辑器
  2. 右键点击左侧的工作簿名称,选择「插入」→「模块」
  3. 把下面的代码粘贴进去:
Sub CompareAndPopulate()
    Dim wsSource As Worksheet, wsCompare As Worksheet, wsResult As Worksheet
    Dim compareRange As Range, cell As Range
    Dim isFound As Boolean
    
    ' 替换成你的工作表名称,如果不是Sheet1/2/3的话
    Set wsSource = ThisWorkbook.Sheets("Sheet2") ' 要提取数据的表
    Set wsCompare = ThisWorkbook.Sheets("Sheet1") ' 用来对比的表
    Set wsResult = ThisWorkbook.Sheets("Sheet3") ' 结果存放的表
    
    ' 先清空结果表的内容
    wsResult.Cells.Clear
    
    ' 获取Sheet2里A列的所有非空数据
    Set compareRange = wsSource.Range("A1:A" & wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row)
    
    ' 遍历Sheet2的每个单元格,对比Sheet1
    For Each cell In compareRange
        isFound = False
        ' 在Sheet1的A列精确查找当前值
        If Not wsCompare.Range("A:A").Find(cell.Value, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
            isFound = True
        End If
        ' 如果没找到,就把值复制到Sheet3
        If Not isFound Then
            wsResult.Cells(wsResult.Rows.Count, "A").End(xlUp).Offset(1, 0).Value = cell.Value
        End If
    Next cell
    
    MsgBox "对比完成!差异数据已经填充到Sheet3啦~"
End Sub
  1. 修改代码里的工作表名称(如果你的表不是默认的Sheet1/2/3),然后按F5运行宏,或者回到Excel界面,通过「开发工具」→「宏」来运行。

备注:内容来源于stack exchange,提问作者Luxray24

火山引擎 最新活动