![]() SELECT * FROM [一班$] UNION SELECT * FROM [二班$] ![]() SELECT 姓名 FROM [一班$] UNION SELECT 姓名 FROM [二班$] ![]() SELECT 姓名 FROM [一班$] UNION ALL SELECT 姓名 FROM [二班$] ![]() …… 代码看不全可以左右拖动...▼ SELECT 姓名,语文 FROM [一班$] UNION ALL SELECT 姓名 FROM [二班$] ![]() 代码看不全可以左右拖动...▼ SELECT 姓名,语文 FROM [一班$] UNION ALL SELECT 语文,姓名 FROM [二班$] ![]() 代码看不全可以左右拖动...▼ SELECT 姓名,语文 AS 语文成绩 FROM [一班$] UNION ALL SELECT 姓名,语文 FROM [二班$] ![]() ![]() 代码看不全可以左右拖动...▼ SELECT 姓名,语文,数学,英语 FROM [一班$] UNION ALL SELECT 姓名,语文,NULL,英语 FROM [二班$] 结果如下: ![]() SELECT 姓名,语文,数学,英语 FROM [一班$] UNION ALL SELECT 姓名,语文,'未考',英语 FROM [二班$] ![]() Sub SQL_UNION() Dim cnn As Object, rst As Object Dim strPath As String, str_cnn As String Dim strSQL As String, strTemp As String Dim sht As Worksheet, strShtName As String Dim i As Long Set cnn = CreateObject('adodb.connection') strPath = ThisWorkbook.FullName If Application.Version < 12 Then str_cnn = 'Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=' & strPath Else str_cnn = 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=' & strPath End If cnn.Open str_cnn strTemp = 'SELECT 姓名,语文,数学,英语,' For Each sht In Worksheets strShtName = sht.Name If strShtName <> ActiveSheet.Name Then strSQL = strSQL & strTemp & ''' & strShtName & '' AS 班级 FROM [' & strShtName & '$] UNION ALL ' End If Next strSQL = Left(strSQL, Len(strSQL) - 11) Set rst = cnn.Execute(strSQL) Cells.ClearContents For i = 0 To rst.Fields.Count - 1 Cells(1, i + 1) = rst.Fields(i).Name Next Range('a2').CopyFromRecordset rst cnn.Close Set cnn = Nothing End Sub ![]() SELECT * FROM [一班$] UNION ALL SELECT * FROM [二班$] |
|