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

Excel中VLOOKUP与SUBSTITUTE/REPLACE/IF函数结合使用问题

解决F列输入ITEM CODE自动替换为描述并填充成本的问题

根据你的需求,直接在F列输入J列的ITEM CODE后自动替换成K列的FULL DESCRIPTION,同时自动填充对应成本到H列,这里提供两种可行方案,你可以根据自己的偏好选择:

方案一:使用VBA工作表事件(直接满足输入后自动替换的需求)

这个方案会在你输入ITEM CODE到F列时,自动完成替换和成本填充,不需要额外操作。步骤如下:

  1. 右键点击当前工作表的标签(比如「Sheet1」),选择「查看代码」,打开VBA编辑器
  2. 将下面的代码粘贴到编辑器窗口中:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' 只处理F列的单元格修改(根据你的实际列调整,这里假设是F列)
    If Not Intersect(Target, Me.Range("F:F")) Is Nothing And Target.Cells.Count = 1 Then
        Dim codeRange As Range
        Dim matchRow As Variant
        
        ' 定义ITEM CODE的范围(J列,这里假设是J3到J50,根据你的实际数据调整)
        Set codeRange = Me.Range("J3:J50")
        
        ' 在J列查找输入的CODE
        matchRow = Application.Match(Target.Value, codeRange, 0)
        
        ' 如果找到匹配项
        If Not IsError(matchRow) Then
            ' 禁用事件防止循环触发
            Application.EnableEvents = False
            
            ' 将F列单元格替换为K列对应的FULL DESCRIPTION
            Target.Value = codeRange.Offset(matchRow - 1, 1).Value ' K列是J列偏移1列
            
            ' 填充H列的成本(假设成本在L列,对应J列的行,根据你的实际列调整)
            Me.Range("H" & Target.Row).Value = codeRange.Offset(matchRow - 1, 2).Value ' L列是J列偏移2列
            
            ' 重新启用事件
            Application.EnableEvents = True
        End If
    End If
End Sub
  1. 关闭VBA编辑器,保存文件为「Excel 启用宏的工作簿(.xlsm)」格式
  2. 现在回到F列,输入J列的任意ITEM CODE,单元格会自动替换成K列的描述,同时H列自动填充对应成本

注意事项:

  • 请根据你的实际数据范围调整代码中的J3:J50、列偏移量(如果成本不在L列,修改Offset(matchRow - 1, 2)中的数字)
  • 启用宏时需要确保Excel的宏安全设置允许运行此工作簿的宏

方案二:无宏方案(使用辅助列+公式,适合不想启用宏的场景)

如果你不想使用宏,可以通过辅助列实现类似效果:

  1. 插入一个辅助列(比如M列),用来输入/选择ITEM CODE
  2. 选中M列的单元格(比如M3:M50),点击「数据」选项卡→「数据验证」,选择「序列」,来源选择J列的ITEM CODE范围(比如$J$3:$J$50),这样可以直接下拉选择CODE,避免输入错误
  3. 在F3单元格输入公式,自动匹配FULL DESCRIPTION:
=XLOOKUP(M3,$J$3:$J$50,$K$3:$K$50,"未找到")

如果你用的是旧版Excel,没有XLOOKUP,可以用VLOOKUP:

=IFERROR(VLOOKUP(M3,$J$3:$K$50,2,FALSE),"未找到")
  1. 在H3单元格输入公式,自动填充成本(假设成本在L列):
=XLOOKUP(M3,$J$3:$J$50,$L$3:$L$50,"未找到")

旧版Excel用VLOOKUP:

=IFERROR(VLOOKUP(M3,$J$3:$L$50,3,FALSE),"未找到")
  1. 把F3和H3的公式下拉填充到需要的行即可

这个方案的好处是不需要启用宏,兼容性更好;缺点是需要通过辅助列输入CODE,而不是直接在F列输入。

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

火山引擎 最新活动