Excel精英培训网

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

[已解决]若何按照这样的要求查找

[复制链接]
发表于 2014-5-5 15:49 | 显示全部楼层 |阅读模式
本帖最后由 股网千王 于 2014-5-6 11:05 编辑

如何按这样的要求查找.zip (11.99 KB, 下载次数: 17)
发表于 2014-5-5 20:58 | 显示全部楼层
  1. Sub Macro1()
  2. Dim c As Range, c2 As Range
  3. For i = 4 To Range("a65536").End(xlUp).Row
  4.     Set c = Sheet3.UsedRange.Find(Cells(i, 1), lookat:=xlWhole, SearchDirection:=xlPrevious)
  5.     Set c2 = Sheet2.UsedRange.Find(Cells(i, 1), lookat:=xlWhole, SearchDirection:=xlPrevious)
  6.     If Not c Is Nothing Then
  7.         Cells(i, "i") = c.Offset(, 5)
  8.     Else
  9.         If Not c2 Is Nothing Then Cells(i, "i") = c2.Offset(, 5)
  10.     End If
  11. Next
  12. End Sub
复制代码
回复

使用道具 举报

发表于 2014-5-5 22:37 | 显示全部楼层
咱觉得,你的测试数据量太少,就是楼上的高手做的也只是满足你目前提供的样本。可能还会要修改!
回复

使用道具 举报

 楼主| 发表于 2014-5-6 08:43 | 显示全部楼层
3楼说地对。不仅仅是查找出库单的A列在sheet2、sheet3中的位置同时也要满足收货单位相同。
回复

使用道具 举报

 楼主| 发表于 2014-5-6 08:48 | 显示全部楼层
dsmch 发表于 2014-5-5 20:58

多谢师兄。不过不仅仅是查找出库单的A列在sheet2、sheet3中的位置同时也要满足收货单位相同。该怎样修改,望兄台赐教。
回复

使用道具 举报

 楼主| 发表于 2014-5-6 09:05 | 显示全部楼层
老师们。来看看吧{:4212:}
回复

使用道具 举报

发表于 2014-5-6 09:16 | 显示全部楼层
  1. Sub tt()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     For k = 2 To Worksheets.Count
  4.         arr = Worksheets(k).[a1].CurrentRegion
  5.         For i = 3 To UBound(arr)
  6.             xkey = arr(i, 1) & arr(i, 2)  '以收货单位和材料编码作为检索条件
  7.             If arr(i, 7) > 0 Then d(xkey) = arr(i, 7)
  8.         Next
  9.     Next
  10.     With Sheet1
  11.         r = .[a65536].End(3).Row
  12.         For i = 4 To r
  13.             xkey = .[h2] & .Cells(i, 1)
  14.             If d.exists(xkey) Then .Cells(i, 6) = d(xkey) Else .Cells(i, 6) = "未找到对应单价"
  15.         Next
  16.     End With
  17. End Sub
复制代码
回复

使用道具 举报

发表于 2014-5-6 09:16 | 显示全部楼层
自己多搞点数据试试吧。

如何按这样的要求查找.rar

20.45 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2014-5-6 10:22 | 显示全部楼层
grf1973 发表于 2014-5-6 09:16
自己多搞点数据试试吧。

师兄,你的代码可以解决当下的问题。多谢您的指教。不过该工作簿中还有许多其它工作表,要求只是在出库明细和年度出库明细里面查找,而不需要在其它的工作表里循环查找。该怎么写代码呢?期盼回复!
回复

使用道具 举报

发表于 2014-5-6 10:40 | 显示全部楼层    本楼为最佳答案   
  1. Sub tt()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     xsh = Array("年度出库", "出库明细")
  4.     For k = 0 To 1
  5.         arr = Worksheets(xsh(k)).[a1].CurrentRegion
  6.         For i = 3 To UBound(arr)
  7.             xkey = arr(i, 1) & arr(i, 2)  '以收货单位和材料编码作为检索条件
  8.             If arr(i, 7) > 0 Then d(xkey) = arr(i, 7)
  9.         Next
  10.     Next
  11.     With Sheet1
  12.         r = .[a65536].End(3).Row
  13.         For i = 4 To r
  14.             xkey = .[h2] & .Cells(i, 1)
  15.             If d.exists(xkey) Then .Cells(i, 6) = d(xkey) Else .Cells(i, 6) = "未找到对应单价"
  16.         Next
  17.     End With
  18. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 18:01 , Processed in 0.580507 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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