ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 316|回复: 8

[求助] 比较麻烦的一个例子,不会做,请老师们帮忙解决一下。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-12 16:28 | 显示全部楼层 |阅读模式
本帖最后由 sypnksss 于 2024-8-13 10:58 编辑

比较麻烦的一个例子,不会做,请老师们帮忙解决一下


Sheet2  :     cSNDefine9  号码(W列)     ,  cSNDefine3 发货日期(Q列) ,cSNDefine4   出货客户(R列)   ,cInvCode 物料编码 (B列)

-------------------------------------------------------------------------------
需求看着是比较多,其实是我想表达得更清楚点,好让老师们能理解到位。
就是,根据sheet1的A列数据为条件,sheet2里的数据,详细条件为:

Sheet1   C  列获取数据的条件为   :
cInvCode 物料编码   前三位 等于   '601'    且       cSNDefine9  号码   不为空    且    同一    cSNDefine9  号码  取最大   cSNDefine3 发货日期
然后  对应  Sheet1    的 A列(号码)为条件,把   Sheet2  筛选过的数据中的    cSNDefine4   出货客户(R列)     对应填到  Sheet1    的 C列。

Sheet1   D  列获取数据的条件为   :
cInvCode 物料编码   前三位 不等于   '601'    且       cSNDefine9  号码   不为空    且    cSNDefine4   出货客户(R列)     不等于  '形态转换' "   
然后  对应  Sheet1    的 A列(号码)为条件,把   Sheet2  筛选过的数据中的    cSNDefine4   出货客户(R列)     对应填到  Sheet1    的 D列。

Sheet1    B列  =   如果C ,D列都有数据,不管C,D列数据是否一致,都取C列,如果C列数据为空,则取D列



原数据太多,10几万条,打包后太大传不上来,我删掉了一部分。附件: 对应客户查询1.rar (1.48 MB, 下载次数: 2) 已更新

TA的精华主题

TA的得分主题

发表于 2024-8-12 19:55 | 显示全部楼层
关键字:left join,可惜了好好的中文,本不想回。
GIF 2024-08-12 19-53-53.gif

对应客户查询.zip

1.52 MB, 下载次数: 8

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-12 19:56 | 显示全部楼层
Sub limonet()
    Dim Cn As Object, StrSQL$, StrSQL0$, StrSQL1$
    Set Cn = CreateObject("Adodb.Connection")
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
    StrSQL0 = "Select 号码 From [Sheet1$A:A] Group By 号码"
    StrSQL = "Select cSNDefine4,cSNDefine3,cSNDefine9 From [Sheet2$] Where [cInvCode] Like '601%' And [cSNDefine9]<>''"
    StrSQL = "Select First(cSNDefine4) As D4,Max(cSNDefine3) As D3,cSNDefine9 From (" & StrSQL & ") Group By cSNDefine9"
    StrSQL = "Select 号码,D4 From (" & StrSQL0 & ")a Left Join (" & StrSQL & ")b On a.号码=b.cSNDefine9"
    StrSQL1 = "Select cSNDefine4,cSNDefine9 From [Sheet2$] Where [cInvCode] Like '601%' And [cSNDefine9]<>'' And [cSNDefine4]<>'形态转换'"
    StrSQL1 = "Select 号码,cSNDefine4 From (" & StrSQL0 & ")a Left Join (" & StrSQL1 & ")b On a.号码=b.cSNDefine9"
    StrSQL = "Select a.号码,IIF(D4 is Null,cSNDefine4,D4),D4,cSNDefine4 From (" & StrSQL & ")a Left Join (" & StrSQL1 & ")b On a.号码=b.号码"
    Range("A2").CopyFromRecordset Cn.Execute(StrSQL)
End Sub

TA的精华主题

TA的得分主题

发表于 2024-8-12 20:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-13 08:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
试着理解做一下

对应客户查询.zip

1.39 MB, 下载次数: 12

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-13 11:00 | 显示全部楼层

对应客户查询1.rar (1.48 MB, 下载次数: 4) 已更新对应的,相比更好看明白,老师抽空帮忙看一下,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-13 11:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
汉唐 发表于 2024-8-13 08:27
试着理解做一下

对应客户查询1.rar (1.48 MB, 下载次数: 5) 十分感谢,其中之前有个条件错了一个,还是感谢您的帮忙。已更新附件

TA的精华主题

TA的得分主题

发表于 2024-8-13 14:10 | 显示全部楼层
按你的要求重新写了一个,供参考

对应客户查询1.zip

1.36 MB, 下载次数: 15

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-14 11:27 | 显示全部楼层
汉唐 发表于 2024-8-13 14:10
按你的要求重新写了一个,供参考

十分感谢,结果有点不对,可能是条件多了我表达的不够明确。不折腾了,我用  limonet 老师的SQL版本吧,还是十分感谢您的辛勤付出。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 12:34 , Processed in 0.046068 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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