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

Excel跨工作表日期列年月匹配:复制Bob表对应整行至新表

Excel日期年月匹配并复制行解决方案

方法一:公式辅助+手动筛选复制

  • 在Bob表新增辅助列(如C列),输入公式提取年月:=TEXT(B2,"yyyy-mm"),下拉填充至所有行
  • 在Mary表新增辅助列(如B列),输入公式提取年月:=TEXT(A2,"yyyy-mm"),下拉填充至所有行
  • 选中Bob表的辅助列,设置条件格式:规则选「使用公式确定要设置格式的单元格」,输入=COUNTIF(Mary!$B:$B,C2)>0,给匹配的单元格标色
  • 筛选Bob表中辅助列标色的行,选中这些行复制到新工作表

方法二:VBA代码自动处理

打开Excel按Alt+F11打开VBA编辑器,插入模块后粘贴以下代码:

Sub MatchYearMonthAndCopy()
    Dim wsBob As Worksheet, wsMary As Worksheet, wsNew As Worksheet
    Dim lastRowBob As Long, lastRowMary As Long, i As Long, j As Long
    Dim bobYM As String, maryYM As String
    
    Set wsBob = ThisWorkbook.Worksheets("Bob")
    Set wsMary = ThisWorkbook.Worksheets("Mary")
    Set wsNew = ThisWorkbook.Worksheets.Add
    wsNew.Name = "MatchedRows"
    
    ' 复制表头
    wsBob.Rows(1).Copy wsNew.Rows(1)
    
    lastRowBob = wsBob.Cells(wsBob.Rows.Count, "B").End(xlUp).Row
    lastRowMary = wsMary.Cells(wsMary.Rows.Count, "A").End(xlUp).Row
    
    ' 遍历Bob表行
    For i = 2 To lastRowBob
        bobYM = Format(wsBob.Cells(i, "B").Value, "yyyy-mm")
        ' 遍历Mary表找匹配年月
        For j = 2 To lastRowMary
            maryYM = Format(wsMary.Cells(j, "A").Value, "yyyy-mm")
            If bobYM = maryYM Then
                wsBob.Rows(i).Copy wsNew.Cells(wsNew.Rows.Count, 1).End(xlUp).Offset(1, 0)
                Exit For ' 找到匹配即停止内层循环,避免重复复制
            End If
        Next j
    Next i
    
    MsgBox "匹配完成,结果已保存到新工作表"
End Sub
  • 按F5运行代码,自动完成匹配和复制
  • 若需匹配Mary表中所有对应年月的行,可删除代码里的Exit For语句

方法三:Power Query可视化处理

  • 点击「数据」选项卡,分别将Bob表和Mary表导入Power Query编辑器
  • 对Bob表:添加自定义列,公式为Date.Year([Column2]) * 100 + Date.Month([Column2]),生成年月数字标识
  • 对Mary表:添加自定义列,公式为Date.Year([Column1]) * 100 + Date.Month([Column1]),生成年月数字标识
  • 选择Bob表,点击「合并查询」,关联Mary表的自定义列,匹配类型选「任意匹配」
  • 筛选出匹配的行,点击「关闭并上载」到新工作表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:12:43