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

如何修改VBA代码遍历有色单元格并按Product列值更新内容?

现有如下VBA代码,可根据条件修改H2:K2区域的值,但需要实现遍历所有有色单元格。需通过选中所有有色单元格设置处理范围,并与Product列中的值进行匹配判断。每次运行宏时,有色单元格的范围不固定,且待匹配值所在的列也不一定是P列。若值不匹配If语句中的任何条件,则不对单元格进行修改。现有代码如下:

Sub Turn_Live_Digital()

If Range("p2").Value = "ADSHEL LIVE" Or _
   Range("p2").Value = "ASDA LIVE" Or _
   Range("p2").Value = "CC DIGITAL MALLS" Or _
   Range("p2").Value = "CCB DIGITAL" Or _
   Range("p2").Value = "MALLS XL" Or _
   Range("p2").Value = "SAINSBURYS LIVE" Or _
   Range("p2").Value = "SOCIALITE" Or _
   Range("p2").Value = "STATION LIVE" Or _
   Range("p2").Value = "STORM DIGITAL" _
Then
    Range("h2:k2").Value = "Digital"
End If
End Sub

不知从何入手,恳请提供帮助。

解决方案

核心逻辑调整

  • 让用户手动选择待处理的有色单元格范围和Product列的位置,适配范围和列不固定的场景
  • 遍历选中的每个单元格,检查其所在行的Product值是否在目标列表中
  • 符合条件则修改该行H-K列的值,不符合则跳过

最终VBA代码

Sub Turn_Live_Digital()
    Dim targetCells As Range
    Dim productCol As Integer
    Dim cell As Range
    Dim productValue As String
    Dim validProducts As Variant
    
    ' 定义需要匹配的产品值集合,后续可直接修改数组内容
    validProducts = Array("ADSHEL LIVE", "ASDA LIVE", "CC DIGITAL MALLS", _
                          "CCB DIGITAL", "MALLS XL", "SAINSBURYS LIVE", _
                          "SOCIALITE", "STATION LIVE", "STORM DIGITAL")
    
    On Error Resume Next
    ' 弹窗让用户选择需要处理的有色单元格范围
    Set targetCells = Application.InputBox("请选中需要处理的有色单元格范围", Type:=8)
    If targetCells Is Nothing Then Exit Sub ' 用户取消选择则退出
    
    ' 弹窗让用户选择Product列的任意单元格,确定匹配值所在列
    productCol = Application.InputBox("请选择Product列中的任意一个单元格", Type:=8).Column
    On Error GoTo 0
    
    ' 遍历每个选中的单元格
    For Each cell In targetCells
        ' 获取当前行对应Product列的值
        productValue = cell.EntireRow.Cells(1, productCol).Value
        
        ' 判断值是否在有效列表中,Match找到则返回索引,未找到返回错误
        If Not IsError(Application.Match(productValue, validProducts, 0)) Then
            ' 修改当前行H到K列的值为"Digital"
            cell.EntireRow.Range("H1:K1").Value = "Digital"
        End If
    Next cell
End Sub

使用说明

  1. 运行宏后,先选中所有需要处理的有色单元格,点击确定
  2. 再点击Product列中的任意一个单元格,确定匹配值所在列
  3. 宏会自动遍历每个选中单元格,检查对应行的Product值,符合条件则修改H-K列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:00:20