Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2248|回复: 1

[已解决]怎样用VBA查找数据并填写Match offset?

[复制链接]
发表于 2009-12-23 10:40 | 显示全部楼层 |阅读模式

 A列B列数据如图所示
我想在E1中输入物品名称,D1单元格就会自动填写出物品名称对应的编号

应问VBA代码怎么写?是不是要用到Match offset?
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

怎样用VBA查找数据并填写Match

怎样用VBA查找数据并填写Match

[此贴子已经被作者于2009-12-23 10:42:00编辑过]
最佳答案
2009-12-23 10:46

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Count = 1 Then
        If Target.Column = 5 Then
            Dim arrYS, arrJG, iTemp, strTemp$
            arrYS = Application.Transpose(Range("B2:B" & Range("A65536").End(xlUp).Row))
            arrJG = Application.Transpose(Range("A2:A" & Range("A65536").End(xlUp).Row))
            iTemp = WorksheetFunction.Match(Target.Value, arrYS, 0)
            If Err.Number <> 0 Then
                strTemp = "#N/A!"
                Err.Clear
            Else
                strTemp = arrJG(iTemp)
            End If
            Cells(Target.Row, 4) = strTemp
        End If
    End If
End Sub
发表于 2009-12-23 10:46 | 显示全部楼层    本楼为最佳答案   


Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Count = 1 Then
        If Target.Column = 5 Then
            Dim arrYS, arrJG, iTemp, strTemp$
            arrYS = Application.Transpose(Range("B2:B" & Range("A65536").End(xlUp).Row))
            arrJG = Application.Transpose(Range("A2:A" & Range("A65536").End(xlUp).Row))
            iTemp = WorksheetFunction.Match(Target.Value, arrYS, 0)
            If Err.Number <> 0 Then
                strTemp = "#N/A!"
                Err.Clear
            Else
                strTemp = arrJG(iTemp)
            End If
            Cells(Target.Row, 4) = strTemp
        End If
    End If
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-6 18:10 , Processed in 0.534926 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表