Excel精英培训网

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

[已解决]VBA循环的问题

[复制链接]
发表于 2013-1-9 13:30 | 显示全部楼层 |阅读模式
Sub pd()
Dim i As Integer
Dim a As Integer
Dim e As Integer
Sheets("sheet2").Select
For e = 1 To Range("a65536").End(xlUp)
For bs = 2 To Range("c65536").End(xlUp)
If Range("a" & bs) = Range("c" & e) Then ”进行数据对比
Range("b" & e) = Format(Now, "hh:ss")  “测试用的
Range("d" & bs) = Format(Now, "hh:ss")  “测试用的
End If
Next
Next
End Sub
现在碰到的问题就是 比如A列有1 2 3 4 5 6 7 8 9 10
                                     C列有 6 7 8 9
大致就是从C2栏值去A列寻找其值相等的(位置),并在B列(位置)显示代码运行的时间
               C3栏值去A列寻找其值相等的(位置),并在B列(位置)显示代码运行的时间
               C4栏值去A列寻找其值相等的(位置),并在B列(位置)显示代码运行的时
    直到C栏结束为止
这段代码运行的时候就只找 6 7 8 9 中的一个就不继续找下去了
                                 个人思路是找到6的时候判断B列有无数据 有就不执行命令 无就执行命令1
                                                 找到7的时候判断B列有无数据 有就不执行命令 无就执行命令2
                                                                                 找到7的时候判断B列有无数据 有就不执行命令 无就执行命令3

最佳答案
2013-1-9 14:37
  1. Sub pd()
  2.     Dim i As Integer
  3.     Dim a As Integer
  4.     Dim e As Integer
  5.     Sheets("sheet2").Select

  6.     For e = 1 To Range("a65536").End(xlUp).Row
  7.         Debug.Print "第 " & e; " 轮循环"
  8.         For bs = 2 To Range("c65536").End(xlUp).Row
  9.             Debug.Print "bs=" & bs
  10.             'ab = Range("a" & e)
  11.             If Range("a" & bs) = Range("c" & e) Then
  12.                 Range("b" & bs) = Format(Now, "hh:ss")
  13.                 Range("d" & e) = Format(Now, "hh:ss")

  14.             End If
  15.         Next
  16.     Next
  17. End Sub
复制代码
看立即窗口的输出。

123.zip

12.19 KB, 下载次数: 8

发表于 2013-1-9 14:33 | 显示全部楼层
回复

使用道具 举报

发表于 2013-1-9 14:35 | 显示全部楼层
  1. For e = 1 To Range("a65536").End(xlUp).row
  2. For Bs = 2 To Range("c65536").End(xlUp).row
复制代码
回复

使用道具 举报

发表于 2013-1-9 14:37 | 显示全部楼层    本楼为最佳答案   
  1. Sub pd()
  2.     Dim i As Integer
  3.     Dim a As Integer
  4.     Dim e As Integer
  5.     Sheets("sheet2").Select

  6.     For e = 1 To Range("a65536").End(xlUp).Row
  7.         Debug.Print "第 " & e; " 轮循环"
  8.         For bs = 2 To Range("c65536").End(xlUp).Row
  9.             Debug.Print "bs=" & bs
  10.             'ab = Range("a" & e)
  11.             If Range("a" & bs) = Range("c" & e) Then
  12.                 Range("b" & bs) = Format(Now, "hh:ss")
  13.                 Range("d" & e) = Format(Now, "hh:ss")

  14.             End If
  15.         Next
  16.     Next
  17. End Sub
复制代码
看立即窗口的输出。
回复

使用道具 举报

 楼主| 发表于 2013-1-9 15:06 | 显示全部楼层
hwc2ycy 发表于 2013-1-9 14:37
看立即窗口的输出。

谢谢,代码测试不行
回复

使用道具 举报

发表于 2013-1-9 15:21 | 显示全部楼层
A列只有一个6在C列出现呀。为啥C列要从第2个数开始循环了。
我要看你输出,就是为了告诉你,数据循环是没有问题的。
回复

使用道具 举报

 楼主| 发表于 2013-1-9 15:52 | 显示全部楼层
hwc2ycy 发表于 2013-1-9 15:21
A列只有一个6在C列出现呀。为啥C列要从第2个数开始循环了。
我要看你输出,就是为了告诉你,数据循环是没有 ...

今天邪门了 一发帖 代码就能用了原始代码就可以用
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 21:29 , Processed in 0.340829 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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