楼主: wangzhuo422
3215 2

[问答] 求VBA大神帮忙分析一下这个VBA里vlookup找Error的问题 [推广有奖]

  • 0关注
  • 1粉丝

已卖:423份资源

大专生

31%

还不是VIP/贵宾

-

威望
0
论坛币
1135 个
通用积分
0.0600
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
413 点
帖子
43
精华
0
在线时间
25 小时
注册时间
2010-1-17
最后登录
2019-1-30

楼主
wangzhuo422 发表于 2015-4-17 13:56:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
现在有一个表是这样的,这个是例子,实际可能有更多行,每次拿到都是不一样的,叫他表1
  • ID\       COID\             Equation \               equation_comment
  • 8649651  pol         D0798_wedfg *68768564                a
  • 8219418  pol         D0798_wfhgv *545489                   b
  • 8292384  pol         D0798_okng * P0650 * 786212          c
  • 9458128  pol         D0997_hbvyutyr * 10057                d
  • 8911892  pol         D0798_u6yrrd *5678                      e
所以每次遇到不同的表1,我想取equation这列*号前面的string然后vlookup另一个表,另一个表有300多行大概就是下面这样,这是个数据库,这表名字ADbac.xls
  • Longname
  • D0798_wedfg          
  • D0798_wfhgv             
  • D0798_okng     
  • D0997_hbvyutyr
  • D0798_wfhgvcvbn              
  • D0798_oknghjgg   
  • D0997_hbvyutyryjn     

303.D0798_u6yrrd

我想让MACRO给我再第一个表第五列也就是F列返回值,如果vlookup有对应数据回“TRUE”如果没有回“FALSE"
下面是code

  • Sub ADDValidation()
  • Dim N As Integer
  • Dim M As String
  • Dim InputRng As Range
  • Dim validatedriverequation_Row As Long
  • Dim validatedriverequation_Clm As Long
  • Dim wkbk As Workbook
  • Dim AD As Range
  • Dim cl As Variant
  • Dim TMP As Worksheet
  • xTitleId = "validatedriverequation"
  • Set InputRng = Application.Selection
  • Set TMP = InputRng.Worksheet
  • Set InputRng = Application.InputBox("Equation Range ", xTitleId, InputRng.Address, Type:=8)
  • validatedriverequation_Row = TMP.Application.Range("F2").Row
  • validatedriverequation_Clm = TMP.Application.Range("F2").Column
  • Set wkbk = Workbooks.Open("P:\ADbac.xls")
  • Set AD = wkbk.Worksheets("ADbac_active").Range("C4:C303")
  • 'On Error Resume Next
  •   'On Error GoTo Errhandler:
  • For Each cl In InputRng
  •    N = InStr(1, cl, "*") - 2
  •    M = Left(cl, N)
  •     TMP.Cells(validatedriverequation_Row, validatedriverequation_Clm) = Application.WorksheetFunction.VLookup(M, AD, 1, False)
  •     If TMP.Cells(validatedriverequation_Row, validatedriverequation_Clm) = Application.WorksheetFunction.VLookup(M, AD, 1, False) Then
  •   TMP.Cells(validatedriverequation_Row, validatedriverequation_Clm).Value = " True"
  • Else: TMP.Cells(validatedriverequation_Row, validatedriverequation_Clm).Value = "False"
  • End If
  •     validatedriverequation_Row = validatedriverequation_Row + 1
  • Next cl
  • wkbk.Close
  • 'Errhandler:
  • 'TMP.Cells(validatedriverequation_Row, validatedriverequation_Clm).Value = "False"
  • 'Resume Next
  • MsgBox "Done"
  • End Sub












































但现在有几个问题
1.当equation这列没有数据或者数据错误的时候,也就是N找不到*时,系统总是告诉我bug在27行。当vlookup找不到对应选项,bug在28行。我试过加入on error这种语句,但不是只停在第一个false就是全部返回true。有没有大神能帮我写一下if error或者on error这样的code在里面

2.数据库表有300多个,我本来想放到code里,这样每次就不用打开这个表,但没办法,太长了,大神能不能帮我想想办法。谢啦



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:vlookup lookup Vlook Error Look equation 数据库 Error

沙发
wangzhuo422 发表于 2015-4-18 05:15:33
有没有人会呀?

藤椅
wangzhuo422 发表于 2015-4-19 04:35:57
???????

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-6 09:29