如何将两个不同工作表中的两个表合并为一个具有不同列的最终表?

时间:2017-06-25 14:20:18

标签: excel excel-vba vba

我是新手编码(新手)。

在工作地点,我有以下操作:

A)我有表A. B)我有表B. C)我需要输出表C(我如何得到它?)

我在这里详细描述:

输入表A和B:

enter image description here

输出表C:

enter image description here

我必须为许多文件获取输出表C,因此很难在Excel中使用Excel中的copy和past选项匹配Order和Order-1。

非常感谢您对此进行调查。

如果问题不明确,请道歉。

如果您需要有关此方面的任何进一步信息,请与我们联系。

2 个答案:

答案 0 :(得分:1)

您可以尝试获取两个表中的UNION

SELECT Time, Type, User,    '', Order-1, Urea
FROM TableA
UNION ALL
SELECT Time,   '', User, Order, Order-1, Urea
FROM TableB
ORDER BY Time

如果您没有真正使用MySQL,那么您不应该像这样标记您的问题,这会产生类似这样的答案。

答案 1 :(得分:1)

这是SQL的Vba。练习子myQuery。

Dim Ws As Worksheet
Dim strSQL As String

Sub myQuery()

Set Ws = Sheets("C")

    strSQL = "SELECT Time, Type, User, '' as [Order], [Order-1], Urea"
    strSQL = strSQL & " FROM [A$] where not isnull(Time) "
    strSQL = strSQL & " Union All  "
    strSQL = strSQL & "SELECT Time, '', User, [Order], [Order-1], Urea "
    strSQL = strSQL & "FROM [B$] where not isnull(time) "
    strSQL = strSQL & "ORDER BY Time "

    DoSQL

End Sub
Sub DoSQL()

    Dim Rs As Object
    Dim strConn As String
    Dim i As Integer

    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=" & ThisWorkbook.FullName & ";" & _
            "Extended Properties=Excel 12.0;"


    Set Rs = CreateObject("ADODB.Recordset")
    Rs.Open strSQL, strConn

    If Not Rs.EOF Then
         With Ws
            .Range("a1").CurrentRegion.Clear
            For i = 0 To Rs.Fields.Count - 1
               .Cells(1, i + 1).Value = Rs.Fields(i).Name
            Next
            .Range("a" & 2).CopyFromRecordset Rs
            .Columns(1).NumberFormatLocal = "[$-409]mm/dd/yy h:mm AM/PM;@"
        End With
    End If
    Rs.Close
    Set Rs = Nothing
End Sub