Excel精英培训网

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

[已解决]用函数或者VBA实现筛选空值或零值的单元格如何实现?

[复制链接]
发表于 2014-9-18 19:54 | 显示全部楼层 |阅读模式
本帖最后由 437153 于 2014-9-18 21:40 编辑

1.rar (1.96 KB, 下载次数: 35)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2014-9-18 20:50 | 显示全部楼层
这儿有肥猫 发表于 2014-9-18 20:41
if cells(2,i) "" or cells(2,i)0 then

多谢。请问函数的方法呢?
回复

使用道具 举报

发表于 2014-9-18 20:41 | 显示全部楼层
回复

使用道具 举报

发表于 2014-9-18 21:02 | 显示全部楼层    本楼为最佳答案   
  1. Sub a()
  2. Dim i&, j&, arr(), brr(), crr
  3. crr = [b1:g2]
  4. For i = 1 To UBound(crr, 2)
  5.     If crr(2, i) <> 0 Then
  6.        n = n + 1
  7.      ReDim Preserve arr(1 To n)
  8.      ReDim Preserve brr(1 To n)
  9.        arr(n) = crr(1, i)
  10.        brr(n) = crr(2, i)
  11.     End If
  12. Next
  13. [j11].Resize(1, n) = arr
  14. [j12].Resize(1, n) = brr
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2014-9-18 21:02 | 显示全部楼层
数组的方法,只会快不会慢
回复

使用道具 举报

 楼主| 发表于 2014-9-18 21:10 | 显示全部楼层
这儿有肥猫 发表于 2014-9-18 21:02

太复杂。 都看不懂。
  1. Sub da()
  2. For i = 2 To 7
  3. If Cells(2, i) = "" Or Cells(2, i) = 0 Then
  4. Else
  5. Cells(11, Cells(11, 255).End(xlToLeft).Column + 1) = Cells(1, i)
  6. Cells(12, Cells(12, 255).End(xlToLeft).Column + 1) = Cells(2, i)
  7. End If
  8. Next
  9. End Sub
复制代码
我是这样写的。但是很郁闷,如果我把条件设置为 <>0 or <>"" 结果是错误的,0的单元格也被划到真的范围了。。。我只能用假的条件来写,不知道是为什么,恳请解惑。
回复

使用道具 举报

发表于 2014-9-18 21:13 | 显示全部楼层
稍改一些即可
  1. Sub dayin()
  2. Range("J11:Q12").ClearContents
  3. For i = 2 To 7
  4. If Cells(2, i) <> "" Or Cells(2, i) <> 0 Then
  5.    Cells(11, Cells(11, 255).End(xlToLeft).Column + 1) = Cells(1, i)
  6.    Cells(12, Cells(12, 255).End(xlToLeft).Column + 1) = Cells(2, i)
  7. End If
  8. Next
  9. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-9-18 21:21 | 显示全部楼层
这儿有肥猫 发表于 2014-9-18 21:13
稍改一些即可

真的很奇怪,我把你的代码复制到我的模块中运行,结果还是一样的。
等于0的单元格,也被划到真的条件当中去了。
回复

使用道具 举报

发表于 2014-9-18 21:27 | 显示全部楼层
  你的一句代码要改一下If Cells(2, i) <> "" and Cells(2, i) <> 0 Then
数组里没有空的~所以用数组不存在判断是否为空
回复

使用道具 举报

 楼主| 发表于 2014-9-18 21:39 | 显示全部楼层
这儿有肥猫 发表于 2014-9-18 21:27
你的一句代码要改一下If Cells(2, i)  "" and Cells(2, i)  0 Then
数组里没有空的~所以用数组不存在 ...

真的可以,
但是有点不明白,为什么是用and
and不是所有条件都为真的情况下,结果才是等于真的吗?
or才是任意一条件为真,结果就为真吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 09:09 , Processed in 0.634289 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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