Excel精英培训网

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

[已解决]部分数据查找不到,求助帮忙修改代码

[复制链接]
发表于 2017-4-21 08:34 | 显示全部楼层 |阅读模式
本帖最后由 thelastdance 于 2017-4-21 08:41 编辑

表名“车间”,p2:q6数据手工能搜索到,代码不知道怎么修改
最佳答案
2017-4-21 09:23
简单改了下
  1. Sub jihua()
  2.     Dim row%, jhrow%, t&
  3.     t = Timer
  4.     For row = 2 To Cells(Rows.Count, "a").End(3).row
  5.         For jhrow = 2 To Sheets("计划工时").Cells(Rows.Count, "a").End(3).row
  6.           If Cells(row, "b") = Sheets("计划工时").Cells(jhrow, "b") And Cells(row, "c") = Sheets("计划工时").Cells(jhrow, "c") And Sheets("计划工时").Cells(jhrow, "e") Like "*" & Cells(row, "e") & "*" Then
  7.              Cells(row, "p") = Sheets("计划工时").Cells(jhrow, "d")
  8.              Cells(row, "q") = Sheets("计划工时").Cells(jhrow, "f")
  9.           End If
  10.         Next
  11.     Next
  12.     MsgBox Timer - t & "秒"
  13. End Sub
复制代码
运行结果如图,该有的都有了

201612.rar

127.52 KB, 下载次数: 13

发表于 2017-4-21 08:45 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-4-21 08:53 | 显示全部楼层

车间表的b列去查找计划工时表的b列,如果相同再看“零件名称是否相同”,都是c列,如果任然相同,再看车间表的e列,去查找计划工时表的e列,这个e列是模糊匹配的,只要有差不多相同的,就认为是一样的,在得出对应的数量和工时,填入车间表的p列和q列。
比如车间的行2,b c列和计划工时表的是一致的,工序都有个车子,所以认为是相同的,则p2=计划工时里面对应的工序的工时,明白吗?
回复

使用道具 举报

发表于 2017-4-21 08:56 | 显示全部楼层
thelastdance 发表于 2017-4-21 08:53
车间表的b列去查找计划工时表的b列,如果相同再看“零件名称是否相同”,都是c列,如果任然相同,再看车 ...

逻辑都理得这么清晰了, 不应该写不出来吧
回复

使用道具 举报

发表于 2017-4-21 09:01 | 显示全部楼层
"计划" 导入到 "车间" 的话

只 循环 计划行数
车间不循环 , 用 变量 = 变量 +1
回复

使用道具 举报

 楼主| 发表于 2017-4-21 09:13 | 显示全部楼层
Excel学徒123 发表于 2017-4-21 08:56
逻辑都理得这么清晰了, 不应该写不出来吧

写得出来就不用求助了
回复

使用道具 举报

 楼主| 发表于 2017-4-21 09:14 | 显示全部楼层
砂海 发表于 2017-4-21 09:01
"计划" 导入到 "车间" 的话

只 循环 计划行数

没理解,不循环怎么对比啊

回复

使用道具 举报

发表于 2017-4-21 09:16 | 显示全部楼层
thelastdance 发表于 2017-4-21 09:14
没理解,不循环怎么对比啊

意思就是用累加器的方式
回复

使用道具 举报

发表于 2017-4-21 09:21 | 显示全部楼层
不说代码效率问题,两个地方错了,第一内层循环与外层循环反了,第二LIKE用反了,总之你就是反了...
回复

使用道具 举报

发表于 2017-4-21 09:23 | 显示全部楼层    本楼为最佳答案   
简单改了下
  1. Sub jihua()
  2.     Dim row%, jhrow%, t&
  3.     t = Timer
  4.     For row = 2 To Cells(Rows.Count, "a").End(3).row
  5.         For jhrow = 2 To Sheets("计划工时").Cells(Rows.Count, "a").End(3).row
  6.           If Cells(row, "b") = Sheets("计划工时").Cells(jhrow, "b") And Cells(row, "c") = Sheets("计划工时").Cells(jhrow, "c") And Sheets("计划工时").Cells(jhrow, "e") Like "*" & Cells(row, "e") & "*" Then
  7.              Cells(row, "p") = Sheets("计划工时").Cells(jhrow, "d")
  8.              Cells(row, "q") = Sheets("计划工时").Cells(jhrow, "f")
  9.           End If
  10.         Next
  11.     Next
  12.     MsgBox Timer - t & "秒"
  13. End Sub
复制代码
运行结果如图,该有的都有了
QQ截图20170421092320.jpg
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 22:49 , Processed in 0.368449 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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