|
原帖由 onthetrip 于 2010-6-18 13:24 发表
还是、又是关于合并表格,生成新表,实在找不到思路,又来麻烦老师们
这种最搞脑子了,条件多了,脑子总会象浆糊一样,糊里糊涂的,呵呵。
看看是不是这种效果?- Sub My_test()
- Dim Sql$, Sql1$, Sql2$, Sql3$, Sql4$
- Dim Conn As Object, rst As Object
- Set Conn = CreateObject("Adodb.Connection")
- Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;hdr=yes;imex=1;';Data Source=" & ThisWorkbook.FullName
- Sheet3.[a2:f65536].ClearContents
-
- Sql = "Select 项目名称,项目规格,Sum(数量) as 数量 from [Sheet1$] Group by 项目名称,项目规格"
-
- Sql1 = "Select distinct aa.项目名称,aa.项目规格,aa.材料名称,aa.材料规格,aa.材料单位, aa.数量 from [sheet2$] aa left join [sheet1$] bb on aa.项目名称=bb.项目名称 and aa.项目规格=bb.项目规格 Where aa.项目名称 is not null and bb.项目名称 is not null"
-
- Sql2 = "Select A.材料名称,A.材料规格,A.材料单位,A.数量*B.数量 as 数量 from (" & Sql1 & ") as A left join (" & Sql & ") as B on A.项目名称=B.项目名称 and A.项目规格=B.项目规格"
-
- Sql3 = "Select aa.项目名称,aa.项目规格, aa.单位,aa.数量 from [sheet1$] aa left join [sheet2$] bb on aa.项目名称=bb.项目名称 And aa.项目规格=bb.项目规格 Where bb.项目名称 is null And bb.项目名称 is null"
-
- Sql4 = "Select 材料名称,材料规格,材料单位,sum(数量) from (" & Sql2 & " Union all " & Sql3 & ") Group by 材料名称,材料规格,材料单位"
-
- Sheet3.Range("a2").CopyFromRecordset Conn.Execute(Sql4)
-
- Conn.Close
- Set Conn
复制代码 没有连在一起写,便于让你看清代码。
详见附件
供参考
[ 本帖最后由 Simon_Zhu 于 2010-7-21 16:59 编辑 ] |
|