Sql 连接两个excel表

Sql 连接两个excel表,sql,excel,Sql,Excel,我有两个excel表格结构和顺序 结构包含 Product | Component | Order_Quantity A | C1 | 1 A | C2 | 3 A | C3 | 3 B | C1 | 1 B | C4 | 2 C | C1 | 1 D | C2 | 3 C | C3

我有两个excel表格结构和顺序

结构包含

Product | Component | Order_Quantity
A       | C1        | 1 
A       | C2        | 3 
A       | C3        | 3 
B       | C1        | 1 
B       | C4        | 2 
C       | C1        | 1 
D       | C2        | 3 
C       | C3        | 3 
订单包含

Order_n | Product | Quantity
1       | A       | 10
2       | B       | 10
3       | A       | 10
4       | C       | 10
6       | B       | 10
如何在excel 2013中连接两个表(没有power pivot或其他外接程序)以查看如下结果:

Order_n | Product | Order_Qty | component | Quantity | Total_QTY
1       | A       | 10        | C1        | 1        | 10
1       | A       | 10        | C2        | 3        | 30
1       | A       | 10        | C3        | 3        | 30
2       | B       | 10        | C1        | 1        | 10
2       | B       | 10        | C4        | 2        | 20
3       | A       | 10        | C1        | 1        | 10
3       | A       | 10        | C2        | 3        | 30
3       | A       | 10        | C3        | 3        | 30
4       | C       | 10        | C1        | 1        | 10
4       | C       | 10        | C3        | 3        | 30
6       | B       | 10        | C1        | 1        | 10
6       | B       | 10        | C4        | 2        | 20
您必须使用VBA。 这应该有用。。。无法测试全部内容,请告诉我是否有效

Sub JoinTables()

    Dim cn
    Dim rs
    Dim strFile As String
    Dim strCon As String
    Dim strSQL As String
    Dim strTbl1 As String
    Dim strTbl2 As String
    Dim JoinField As String
    Dim Table1Name As String
    Dim Table2Name As String
    Dim Table3Address As String
    Dim Table1Worksheet As String
    Dim Table2Worksheet As String
    Dim Table3Worksheet As String



    ' CHANGE THESE!
    Table1Name = "structure": Table1Worksheet = "Sheet1"  ' Name of table and name of the worksheet it is on
    Table2Name = "order": Table2Worksheet = "Sheet1"
    Table3Address = "A2": Table3Worksheet = "Sheet2"  ' The result
    JoinField = "Product"
    ' ==================================

    strFile = ThisWorkbook.FullName
    strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"

    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    cn.Open strCon

    strTbl1 = " [" & Table1Worksheet & "$" & Replace(ThisWorkbook.Worksheets(Table1Worksheet).ListObjects(Table1Name).Range.AddressLocal, "$", "") & "] AS T1 "
    strTbl2 = " [" & Table2Worksheet & "$" & Replace(ThisWorkbook.Worksheets(Table2Worksheet).ListObjects(Table2Name).Range.AddressLocal, "$", "") & "] AS T2 "
    strSQL = "SELECT * FROM " & strTbl1 & " LEFT JOIN " & strTbl2 & " ON T1." & JoinField & "=T2." & JoinField

    rs.Open strSQL, cn

    ThisWorkbook.Worksheets(Table3Worksheet).Range(Table3Address).CopyFromRecordset rs

    rs.Close
    cn.Close

End Sub

在Excel中选择Data->FromOtherSources->FromMicrosoftQuery。选择Excel文件。找到包含这两张工作表的Excel文件并导入数据。将有一个向导,允许您以您想要的方式加入这些工作表为什么在有本机功能时使用VB?我试图避免使用VBA和加载项,而是使用本机功能;我怎么能用一种本土的方式来做这件事呢?这让我很烦,OP连续第三次说“这不是我想要的”,而不是“谢谢你为我花的时间”(你不会在5分钟内写出这样的东西)。请更清楚地知道你想要什么,并更加感激。好了,我已经不想在这个网站上提供答案了。再见。谢谢Roemer,我非常抱歉并感谢您的努力,但我正在寻找一种不使用vba的解决方案。