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

请求合并Excel宏:新增列+VLOOKUP匹配+按ID设置行格式

合并VBA宏:新增Name列、填充匹配公式并设置行颜色

没问题,我已经把你需要的两个宏合并成一个完整的过程,同时加入了VLOOKUP公式自动填充的逻辑,还完整保留了你原来的行颜色设置规则。下面是可以直接使用的代码:

Sub ProcessSheet1()
    Dim ws As Worksheet
    Dim lRow As Long
    Dim rngIDHeader As Range
    Dim cell As Range
    Dim cell_colour As Integer
    
    ' 指定操作的工作表为Sheet1,避免当前工作表切换时出错
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    
    ' ---------------------- 第一步:新增Name列并添加VLOOKUP公式 ----------------------
    With ws
        ' 精准查找ID列的表头(完全匹配)
        Set rngIDHeader = .Rows(1).Find(what:="ID", After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole)
        
        ' 如果成功找到ID列
        If Not rngIDHeader Is Nothing Then
            ' 在ID列右侧插入新列
            rngIDHeader.Offset(0, 1).EntireColumn.Insert
            ' 设置新列表头为Name
            rngIDHeader.Offset(0, 1).Value = "Name"
            
            ' 获取ID列的最后一行数据行号
            lRow = .Range("E" & .Rows.Count).End(xlUp).Row
            
            ' 批量填充VLOOKUP公式到Name列,比逐个单元格写入更高效
            .Range(rngIDHeader.Offset(1, 1), .Cells(lRow, rngIDHeader.Column + 1)).Formula = _
                "=VLOOKUP(E2,Data!A:B,2,FALSE)"
        End If
        
        ' ---------------------- 第二步:按ID设置整行颜色 ----------------------
        ' 遍历ID列的所有数据行(从第2行到最后一行)
        For Each cell In .Range("E2:E" & lRow)
            Select Case cell.Value
                Case "x12340"
                    cell_colour = 2
                Case "x12341"
                    cell_colour = 6
                    cell.EntireRow.Font.ColorIndex = 4
                Case "x12342"
                    cell_colour = 6
                    cell.EntireRow.Font.ColorIndex = 2
                Case "x12343"
                    cell_colour = 7
                    cell.EntireRow.Font.ColorIndex = 2
                Case "x12344"
                    cell_colour = 8
                    cell.EntireRow.Font.ColorIndex = 2
                Case "x12345"
                    cell_colour = 9
                    cell.EntireRow.Font.ColorIndex = 2
                Case Else
                    cell_colour = 1
                    cell.EntireRow.Font.ColorIndex = 4
            End Select
            cell.EntireRow.Interior.ColorIndex = cell_colour
        Next cell
    End With
End Sub

关键优化说明

  • 明确绑定操作工作表为Sheet1,防止切换到其他工作表时执行错误
  • 批量填充VLOOKUP公式,大幅提升运行效率(避免循环写入单个单元格)
  • 加入ID列存在性判断,防止找不到表头时触发报错
  • 完整保留了你原来所有的行背景色、字体颜色设置规则

使用方法

  1. 打开目标Excel工作簿,按下Alt + F11打开VBA编辑器
  2. 右键点击工作簿名称,选择「插入」→「模块」
  3. 将上述代码粘贴到新模块中
  4. 回到Excel界面,你可以直接运行这个宏,或者给它绑定一个按钮方便触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:08:02