Excel精英培训网

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

[已解决]为什么此条代码任何一个单元格为空都不能模糊提取数据。谢谢

[复制链接]
发表于 2014-11-3 08:28 | 显示全部楼层 |阅读模式
本帖最后由 qinhuan66 于 2014-11-3 10:26 编辑

为什么此条代码任何一个单元格为空都不能模糊提取数据。谢谢。 如下图
支付清单1.zip (37.88 KB, 下载次数: 14)
发表于 2014-11-3 09:29 | 显示全部楼层
为空也要能取?
  1. Sub 生成打印数据()
  2.     Dim i%, j%, k%
  3.     k = 4
  4.     Dim sht As Worksheet
  5.     Set sht = Worksheets("住院报销登记")
  6.     With sht
  7.         For i = 5 To .[A4].End(xlDown).Row
  8.             If n = 35 Then n = 0: x = x + 1: k = 40 * x + 4
  9.             If [H3] >= .Cells(i, 8) And .Cells(i, 8) >= [G3] Then
  10.                 If .Cells(i, 3) = [j3] Or (Len([j3]) = 0) Then
  11.                     If .Cells(i, 4) = [k3] Or (Len([k3]) = 0) Then
  12.                         If .Cells(i, 5) = [l3] Or (Len([l3]) = 0) Then
  13.                             n = n + 1: k = k + 1
  14.                             For j = 2 To 8
  15.                                 Cells(k, j) = Worksheets("住院报销登记").Cells(i, j)
  16.                             Next
  17.                         End If
  18.                     End If
  19.                 End If
  20.             End If
  21.         Next
  22.     End With
  23. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-11-3 09:29 | 显示全部楼层
因为你的代码里都是 写的直接等于,可以考虑用 like ~另外那么多的if,直接用一个if *** and**then
不是更简单?
回复

使用道具 举报

 楼主| 发表于 2014-11-3 09:48 | 显示全部楼层
hwc2ycy 发表于 2014-11-3 09:29
为空也要能取?

你好版主可以了。但发现一个问题如果第一次生成35条数据,第二次只生成10条数据,第一次的11至35条数据还是保留在原有单元格中,能否做到生成时替换原有数据(清空的意思)谢谢
回复

使用道具 举报

发表于 2014-11-3 10:06 | 显示全部楼层    本楼为最佳答案   
qinhuan66 发表于 2014-11-3 09:48
你好版主可以了。但发现一个问题如果第一次生成35条数据,第二次只生成10条数据,第一次的11至35条数据还 ...
  1. Sub 生成打印数据()
  2.     Dim i%, j%, k%
  3.     Dim sht As Worksheet
  4.     Set sht = Worksheets("住院报销登记")
  5.     For k = 5 To 285 Step 40
  6.         Debug.Print Cells(k, 2).Resize(35, 7).Address
  7.         Cells(k, 2).Resize(35, 7).ClearContents
  8.      Next
  9.     k = 4
  10.     With sht
  11.         For i = 5 To .[A4].End(xlDown).Row
  12.             If n = 35 Then
  13.                 n = 0: x = x + 1: k = 40 * x + 4
  14.                 Cells(k + 1, 2).Resize(35, 7).ClearContents
  15.             End If
  16.             If [H3] >= .Cells(i, 8) And .Cells(i, 8) >= [G3] Then
  17.                 If .Cells(i, 3) = [j3] Or (Len([j3]) = 0) Then
  18.                     If .Cells(i, 4) = [k3] Or (Len([k3]) = 0) Then
  19.                         If .Cells(i, 5) = [l3] Or (Len([l3]) = 0) Then
  20.                             n = n + 1: k = k + 1
  21.                             For j = 2 To 8
  22.                                 Cells(k, j) = sht.Cells(i, j)
  23.                             Next
  24.                         End If
  25.                     End If
  26.                 End If
  27.             End If
  28.         Next
  29.     End With
  30. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 很给力!谢谢版主

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 19:05 , Processed in 0.321105 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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