Excel精英培训网

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

[已解决]VBA查找与判断

[复制链接]
发表于 2013-7-3 15:29 | 显示全部楼层 |阅读模式
1.JPG
用E列里的数据挨个去a列里搜索,
1.如果有将对应行里的数值填到B列,例如:第一行
2.如果有,且B列里已经有数值了,就把对应行的数值填到C.例如:第二行
3.如果没有就在G列里填一个X(字母X),例如:第三行

最佳答案
2013-7-8 21:36
附件请测试
  1. Private Sub CommandButton1_Click()
  2. Dim arr, i&, j&
  3. arr = UsedRange
  4. ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + 1)
  5. For j = 1 To UBound(arr)
  6.   K = 0
  7.   For i = 1 To UBound(arr)
  8.     If arr(j, 5) = arr(i, 1) Then
  9.       If arr(i, 2) = "" Then
  10.         arr(i, 2) = arr(j, 6)
  11.       Else
  12.         arr(i, 3) = arr(j, 6)
  13.       End If
  14.       K = K + 1
  15.     End If
  16.   Next i
  17.   If K = 0 Then arr(j, 7) = "X"
  18. Next j
  19. [A1].Resize(UBound(arr), UBound(arr, 2)) = arr
  20. End Sub
复制代码
 楼主| 发表于 2013-7-4 10:04 | 显示全部楼层
回复

使用道具 举报

发表于 2013-7-8 20:13 | 显示全部楼层
回复

使用道具 举报

发表于 2013-7-8 21:36 | 显示全部楼层    本楼为最佳答案   
附件请测试
  1. Private Sub CommandButton1_Click()
  2. Dim arr, i&, j&
  3. arr = UsedRange
  4. ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + 1)
  5. For j = 1 To UBound(arr)
  6.   K = 0
  7.   For i = 1 To UBound(arr)
  8.     If arr(j, 5) = arr(i, 1) Then
  9.       If arr(i, 2) = "" Then
  10.         arr(i, 2) = arr(j, 6)
  11.       Else
  12.         arr(i, 3) = arr(j, 6)
  13.       End If
  14.       K = K + 1
  15.     End If
  16.   Next i
  17.   If K = 0 Then arr(j, 7) = "X"
  18. Next j
  19. [A1].Resize(UBound(arr), UBound(arr, 2)) = arr
  20. End Sub
复制代码

TEST.rar

8.27 KB, 下载次数: 9

回复

使用道具 举报

发表于 2013-7-8 21:48 | 显示全部楼层
用函数都可以达到要求。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 11:04 , Processed in 0.431346 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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