Excel精英培训网

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

[已解决]怎样忽略错误值或者空格(重发)

[复制链接]
发表于 2011-10-24 21:59 | 显示全部楼层 |阅读模式
不知道怎么编辑,重新发一个帖子
假设b1:b30包含有错误值或者空行,我想忽略掉直接往下运行,麻烦老师们帮我看看这个代码怎么写
Sub c()
Dim x%
With Sheet1
For x = 1 To 30
If .Cells(x, b) = "" Then
x = x + 1
End If
  .Cells(x, d) = "=VLOOKUP(b" & x & ",h:n,5)"
Next x
End With
End Sub
提示红色部分错误'13'类型不匹配,我把(x,b)改成(x,"B")不行,改成(x,2)也不行,请大家指点一下。
最佳答案
2011-10-25 00:21
  1. Sub c()
  2.     Dim x
  3.     With Sheet1
  4.         For x = 1 To 30
  5.             If IsError(.Cells(x, "b")) Then GoTo 100 '另一种写法,跳转语句(如果是错误值,跳到100:语句)
  6.             If Len(.Cells(x, "b")) = 0 Then GoTo 100
  7.          .Cells(x, "d") = "=VLOOKUP(b" & x & ",h:n,5)"
  8. 100:
  9.         Next x
  10.     End With
  11. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-10-24 22:02 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-10-24 22:10 | 显示全部楼层
版主呀,能解释一下原因吗?另外我试了一下,也不行,提示错误'1004',应用程序定义或者对象定义错误。
回复

使用道具 举报

发表于 2011-10-24 22:35 | 显示全部楼层
  1. Sub c()
  2.     Dim x
  3.     With Sheet1
  4.         For x = 1 To 30
  5.             If .Cells(x, "b") = "" Then
  6.                 x = x + 1
  7.             End If
  8.             .Cells(x, "d") = "=VLOOKUP(b" & x & ",h:n,5)"
  9.         Next x
  10.     End With
  11. End Sub
复制代码
没有附件测试,
不知这样可以运行了吗?
如果可以,不知达到效果了吗?
回复

使用道具 举报

 楼主| 发表于 2011-10-24 23:21 | 显示全部楼层
本帖最后由 wboy 于 2011-10-24 23:45 编辑

还是有问题,我上传个附件,请老师再修改一下。
说明一下,我刚开始学习vba,数据都是随机拿来练习的,并非有意拿些无意义的数据来敷衍。

求助.rar

13.12 KB, 下载次数: 23

回复

使用道具 举报

发表于 2011-10-24 23:42 | 显示全部楼层
本帖最后由 xpw6061 于 2011-10-25 00:22 编辑

意思是b列某个单元格为空的话,相应的D列就不写公式吧,这样就很简单
Dim x
    With Sheet1
        For x = 1 To 30
            If .Cells(x, "b") <> "" Then
               
            
            .Cells(x, "d") = "=VLOOKUP(b" & x & ",h:n,5)"
            End If
        Next x
    End With
回复

使用道具 举报

 楼主| 发表于 2011-10-24 23:54 | 显示全部楼层
楼上的帮我再看一下,我刚才上传得有问题,改了点。
说一下我的目的,虽然我现在的测试没有实际意义,但是我希望我将来要是编写某些模块的时候,如果有空值(用if语句得到的)或者错误值,可以直接忽略过去,这样可以提高一点运行速度。
回复

使用道具 举报

发表于 2011-10-25 00:15 | 显示全部楼层
        For x = 1 To 30
            If Not IsError(.Cells(x, "b")) Then
            If .Cells(x, "b") <> "" Then
                你的操作
            End If
            End If
        Next x
回复

使用道具 举报

发表于 2011-10-25 00:17 | 显示全部楼层
  1. Sub c()
  2.     Dim x
  3.     With Sheet1
  4.         For x = 1 To 30
  5.             If IsError(.Cells(x, "b")) Then
  6.             ElseIf Len(.Cells(x, "b")) = 0 Then
  7.             Else
  8.             .Cells(x, "d") = "=VLOOKUP(b" & x & ",h:n,5)"
  9.             End If
  10.         Next x
  11.     End With
  12. End Sub
复制代码
回复

使用道具 举报

发表于 2011-10-25 00:21 | 显示全部楼层    本楼为最佳答案   
  1. Sub c()
  2.     Dim x
  3.     With Sheet1
  4.         For x = 1 To 30
  5.             If IsError(.Cells(x, "b")) Then GoTo 100 '另一种写法,跳转语句(如果是错误值,跳到100:语句)
  6.             If Len(.Cells(x, "b")) = 0 Then GoTo 100
  7.          .Cells(x, "d") = "=VLOOKUP(b" & x & ",h:n,5)"
  8. 100:
  9.         Next x
  10.     End With
  11. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 17:59 , Processed in 0.407948 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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