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

Excel VBA如何提取指定列重复值并连带对应列内容复制到其他工作表

Excel VBA 提取B列重复值及对应D列数据解决方案

修改后的代码可直接实现需求,优化了原有代码的逻辑冗余、判断列错误、整行复制的问题:

Sub FindPIDDuplicates()
    Dim wstSource As Worksheet, wstOutput As Worksheet
    Dim lastRow As Long, i As Long, outputRow As Long
    
    ' 定义源表和目标表
    Set wstSource = ThisWorkbook.Worksheets("Sheet1")
    Set wstOutput = ThisWorkbook.Worksheets("Sheet2")
    
    Application.ScreenUpdating = False
    outputRow = 2 ' 目标表从第二行开始写数据,第一行放表头
    
    ' 复制B、D列表头到目标表,可根据需要调整目标列位置
    wstOutput.Range("A1").Value = wstSource.Range("B1").Value
    wstOutput.Range("B1").Value = wstSource.Range("D1").Value
    
    ' 获取源表B列最后一行行号
    lastRow = wstSource.Cells(wstSource.Rows.Count, "B").End(xlUp).Row
    
    ' 遍历源表判断B列值是否重复
    For i = 2 To lastRow
        If Application.WorksheetFunction.CountIf(wstSource.Range("B:B"), wstSource.Range("B" & i).Value) > 1 Then
            ' 写入对应行的B、D列值到目标表
            wstOutput.Range("A" & outputRow).Value = wstSource.Range("B" & i).Value
            wstOutput.Range("B" & outputRow).Value = wstSource.Range("D" & i).Value
            outputRow = outputRow + 1
        End If
    Next i
    
    Application.ScreenUpdating = True
End Sub

代码说明

  • 重复判断逻辑直接针对B列,完全匹配需求场景
  • 仅提取重复行的B、D两列数据写入目标表,无冗余内容
  • 遍历逻辑兼容性更强,不会因源表数据范围变化出现执行错误
  • 如果需要目标表中B列、D列的位置和源表保持一致,只需修改赋值部分的目标列号即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:45:04