以下是引用office2008在2008-9-4 8:39:05的发言:已解决一部分,下面增加了平均分和总分 然后在下面增加一条合计,看有红色的地方 谢谢LDY高手 我上传附件,在 "双表比较" 中 full join 在EXCEL里估计难,我做了一个 左右连接 请简化 "两两相同取其一" 中replace函数用不了,只能用 iif, left ,len函数组合而成,看看能否精简 "行列转换" 中 按要求 平均分,总分 再添一条合计. 看附件 ,反一下 从 下表转成上表 ,又如何办? 其他表的代码看看能否改进化? excel,access 不支持full join,实现办法是left join+right join +union Sub yy10() With Worksheets("双表比较") Set CNN = CreateObject("adodb.connection") CNN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;hdr=yes;';Data Source=" & ThisWorkbook.FullName r = .Range("a65536").End(xlUp).Row .Range("f2:l100").ClearContents Sql = " select * from [双表比较$a1:d7] a left join [双表比较$a12:d17] b on a.SKU&a.货物批号&a.生产日期=b.SKU&b.货物批号&b.生产日期" sql2 = " select * from [双表比较$a1:d7] a right join [双表比较$a12:d17] b on a.SKU&a.货物批号&a.生产日期=b.SKU&b.货物批号&b.生产日期" sql3 = Sql & " union " & sql2 Sql = "select iif(isnull(a.sku),b.sku,a.sku),iif(isnull(a.货物批号),b.货物批号,a.货物批号),iif(isnull(a.生产日期),b.生产日期,a.生产日期),a.数量,b.数量,iif(isnull(a.数量),0,a.数量)-iif(isnull(b.数量),0,b.数量),switch(isnull(a.数量),'库存',isnull(b.数量),'系统',true,'正常') from (" & sql3 & " )" .Range("f2").CopyFromRecordset CNN.Execute(Sql) End With End Sub
[此贴子已经被作者于2008-9-4 15:44:33编辑过] |