当前位置:编程学习 > VB >>

循环查找的问题(用与解决工作中的问题,不胜感激)

我想用vba在excel里编写,通过循环a表的“编号缩写”找到b表对应的产品编码,比较实际产量与计划产量,如果能找到则返回实际产量与订单个数(实际产量<计划产量,如果有实际产量>计划产量,则返回计划产量),如果实际产量为一个多订单,则返回的订单完成数为2。(例如:953系列的实际产量为52,计划数为两个定单,则应返回产量80,订单执行个数2) 

a表字段:                               b表字段 

编号缩写   实际产量              订单编号           产品编号            计划产量 
876       1000                     1         sd45725876ad-01        522 
953        80                      2         sf6564953fe-01         50 
554        70                      3        ft6125554fg-02         50 
337        80                      4        ft6125554fg-02         40 
951                                5        gfd654337df-04         100 
--------------------编程问答-------------------- 没太明白。

虽然你发了两三个贴子,但没把问题说清楚,再多的贴子也没有用处。

(例如:953系列的实际产量为52,计划数为两个定单,则应返回产量80,订单执行个数2)
只看到一个订单啊,‘实际产量’是80,‘计划产量’是50。怎么又说是‘实际产量是52’了?


如果能找到则返回实际产量与订单个数(实际产量 <计划产量,如果有实际产量>计划产量,则返回计划产量)
不太明白你说的意思,把哪种情况下返回什么值说清楚点吧!
--------------------编程问答-------------------- LZ你大概的想法我能理解,个人建议你两个表之间要有一个字段相联系,不能用A表的一个字段作为B表中另一个字段的缩写再进去模糊查找,否则数据量一大,很容易死翘翘。 --------------------编程问答-------------------- 楼主,这个问题你建议你发到 Office开发/vba 这个板块,可能会有人帮解决。
--------------------编程问答-------------------- 顶,接分 --------------------编程问答-------------------- 没有明白哦
实际产量是80啊 --------------------编程问答-------------------- 两个while循环,一个统计变量,一个去下一个地址的函数,一个求余算法。

差不都就能搞定了。 --------------------编程问答-------------------- 问题好解结  关键LZ说的不清楚 --------------------编程问答-------------------- Sub CheckOrder()
'
' 计算定单执行情况,返回汇总信息
' 得到实际产量,计划,定单个数,及考核数量
' 考核数量计算方法为,实际超过的按计划数量计算
' 假设本工作簿有三张工作表
' 分别为 a,b和sheet3
' 其中a的字段为[编号缩写]及[实际产量]
' 而b的字段为[订单编号],[产品编号],[计划产量],[编号缩写]
' sheet3中的第一行为[编号缩写],[定单数量],[产出],[计划],[考核数量]
' lqnoway 记录的宏 2009-8-1

  Dim myCnn As Object ' 数据库操作连接对象
  Dim myResult As Object '执行结果记录集合
  Dim mySql As String '查询命令字符串
  
  '建立ADO连接对象
  Set myCnn = CreateObject("ADODB.connection")
  '建立ADO记录对象
  Set myResult = CreateObject("ADODB.recordset")
  
  '将工作簿本身做为数据库进行连接
  With myCnn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & ThisWorkbook.FullName & ";" & _
                        "Extended Properties=Excel 8.0;"
    .Open
  End With
  
  '按编号缩写进行组合查询的语句
  '得到实际产量,计划,定单个数,及考核数量
  mySql = "SELECT b.编号缩写,COUNT(b.编号缩写)," & _
        " (SELECT a.实际产量 FROM [a$] a WHERE a.编号缩写=b.编号缩写) as 产出," & _
        " SUM(b.计划产量) as 计划, " & _
        " IIF(计划<产出,计划,产出) " & _
        " FROM [b$] b GROUP BY b.编号缩写"
  '执行查询命令
  myResult.Open mySql, myCnn, 1, 1
  '如果有查询结果,将结果复制到sheet3的以A2单元格
  '为起点的区域
  If myResult.RecordCount Then
    Sheet3.Range("a2").CopyFromRecordset myResult
  End If
End Sub
--------------------编程问答-------------------- 实际按LZ数据,运行结果如下
编号缩写 定单数量 产出 计划 考核数量
337 1 80 100 80
554 2 70 90 70
876 1 1000 522 522
953 1 80 50 50
--------------------编程问答-------------------- LZ你把表格发到我邮箱去吧,再附上要求,我给你写代码.....

liujiaqiid@sina.com --------------------编程问答--------------------
补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,