我有一个Excel文档,其中某些列未命名。 excel的组织方式是每个类别都有一个DateTime
和一个值,但是只有DateTime
列具有标题(这是类别的名称,而不是“日期”)
例如
|Category 1| | |Category 2| |
|May 1 |13246| |May 4 |84563 |
|May 3 |65842| |May 7 |84535 |
|May 8 |86453| |May 8 |876541|
等,用于文档的其余部分。有没有办法将两个列与SQL关联在一起?可能类似
Select Category1, [Category1 + 1]
from Table
谢谢
答案 0 :(得分:1)
我已经探讨了这个问题。我认为最简单的解决方案是仅添加标题。
但是VBA中的解决方法。创建连接时,我们将HDR设置为no。这将自动为我们生成标题,从F1到Fn。不幸的是,我们现在将有一行读取类别1,空,类别2,空。我们无法运行删除查询,因为它们不受支持。我尝试将整个行设置为null,但遇到了问题。
Sub main()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strFile As String
Dim strCon As String
Dim strSql As String
cn.Open _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source='" & ThisWorkbook.FullName & "';" & _
"Extended Properties=""Excel 12.0 Macro;HDR=NO;IMEX=1;"";"
Set cn = New ADODB.Connection
cn.Open strCon
strSql = "SELECT * From [DataTable]"
Set rs = New ADODB.Recordset
rs.Open strSql, cn
Debug.Print rs.GetString
rs.Close
strSql = "SELECT CDATE([F1]),CDATE([F3]),[F4] FROM [DATATABLE] WHERE [F2] = 13246 ORDER BY [F1];"
rs.Open strSql, cn
Debug.Print rs.GetString
Set cn = Nothing
Set rs = Nothing
End Sub
我的输出。首先执行debug.print可以获取整个记录集。然后,我运行一个测试查询,并确保它看起来还可以。
category 1 category 2
43221 13246 43224 84563
43223 65842 43227 84535
43228 86453 43228 876541
5/1/2018 5/4/2018 84563