1. Sub SQL2Arr()
  2. Dim AdoCN As Object
  3. Dim AdoRe As Object
  4. Dim SQL As String
  5. Dim Arr1, Arr2, Arr3
  6. Set AdoCN = CreateObject( "ADODB.Connection" )
  7. Set AdoRe = CreateObject( "ADODB.Recordset" )
  8. SQL = "SELECT * FROM [Sheet1$A1:C11]"
  9. AdoCN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
  10. "Data Source=" & ThisWorkbook.FullName & ";" & _
  11. "Extended Properties=Excel 12.0;"
  12. Set AdoRe = AdoCN.Execute(SQL)
  13. Arr1 = AdoRe.GetRows(, , "姓名" ) '取得某一列
  14. AdoRe.MoveFirst '取完一次,要将指针移动到最前
  15. Arr2 = AdoRe.GetRows(, , Array( "姓名" , "班级" )) '取得两列
  16. AdoRe.MoveFirst '取完一次,要将指针移动到最前
  17. Arr3 = AdoRe.GetRows '取得全部
  18. AdoCN.Close
  19. Set AdoRe = Nothing
  20. Set AdoCN = Nothing
  21. End Sub

利用这个方法,也可以单独获取某一
附件下载:在VBA中如何将SQL得到的数据直接赋值到数组? http://www.exceltip.net/thread-13032-1-1-11314.html Private Sub Worksheet_Activate() On Error Resume Next Dim x As Object, yy As Object, sql As String Set x = CreateObject("ADODB.Connection") x.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=' Excel 8.0;hdr=no;';Data Source=" & ActiveWorkbook.FullName sql = "select f6,f2,f3,f4,f5,f7,f13,f24 -f25 from [sheet1$] where f24 -f25<f17 and (f13'C3' or f13 is null)" ‘不等于字符串用 ‘C3’ 包含空值用 is null Set yy = x.Execute( sql ) Range("a:h").ClearContents Range("a1:h1") = Array("编号", "品名", "规格", "产地", "单位", "件装", "属性", "计划") ‘表头 另外 赋值 [a2].CopyFrom Recordset yy Set yy = Nothing Set x = Nothing End Sub 2,用ADO Connection对象查询 '仿制简单的 SQL 查询语句,用于对二维 数组 的查询 '参照 SQL 语句:Select * From array [Where conditions] [Distinct fields] [ResultWithTitle] '实现功能: ' 依条件设置查询 数组 ,返回包含查询字段(或全部字段)的 数组 ,可多条件组合。 ' 条件运算符包括:> = < >= <= <> , like(正则表达式) ' 使用此函数,需要在文件 引用正则表达式脚本 Microsoft VBScript Regular Expressions x.x ' (根据不同的电脑配置和环境此处会有差异) '算法简要: ' 1、查询条件运算符:仅有 >, =, <, >=, <=, <> , like(正则表达式) ' 本函数 仅有上述运算符。原因在于,更多的运算符编制逻辑过于复杂,又不太常用。 ' 为了尽可能多地容纳各种运算关系,添加了正则表达式匹配运算, ' 在某个单一条件 ,正则几乎可以容纳绝大部分的比对运算关系了。 ' 2、数字比较: ' 采用了将数字型字符串类型转换为数字之后再比较的方法,结果更为准确。 ' 3、其他算法和运算速度: ' 编制过程 ,试验过使用 正则+逻辑分支+表达式引用 的方法, ' 可以实现几乎等同于 SQL 查询语句的复杂功能,而且代码更简捷。 ' 但运算速度相差过于悬殊(大概几十到上百倍 - "一闪而过"和"一袋烟"的差距!),最后不得不放弃。 ' 所以现在的版本相当于一个简化了的select语句,但对于大多数查询情况而言够用了。 ADODB用来操作 数据 库是非常方便的。用 Recordset 对象,可以 直接 增删改 数据 库而不用使用 SQL ADD/UPDATE/DELETE语句. 这个系列结合自己的实践,全面记录一些使用细节。 Dim db_xls, sql , arr db_xls = ThisWorkbook.FullName sql = "select * from [sheet1$] where 1 " arr = db_ sql _arr(db_xls, sql ) Sheets("sheet2").Cells.Clear Sheets("sheet2").Cells(1, 1).Resize(UBound(arr), UBound(arr, 2)) = arr End S. 重置 数组 大小 ReDim myarray(UBound(myarray) + 1)'重置 数组 大小不保留原来 数据 ReDim Preserve myarray(UBound(myarray) + 1)'重置 数组 大小且保留原来 数据 数组 写入表格 [a1:a?] = Application.WorksheetFunction.T... Dim arr() As String '定义动态 数组 Dim n As Long Dim i As Integer n = Application.WorksheetFunction.CountA(Range("A:A")) '确定A列非空 数据 数量 ReDim arr(1 To n) As String str Sql = ""str Sql = str Sql & " select max(number) from dbo.#DATA" & vbCrLfrss.Open str Sql , cnn numb = rss.Fields(0)rss.Close 转载于:https://www.cnblogs.com/zigewb/archive/2013/02/06/2900645.htm... 1. 什么是 SQL SQL (Structured Query Language)是“结构化查询语言”,它是对关系型 数据 库的操作语言。它可以应用到所有关系型 数据 ,例如:My SQL 、Oracle、 SQL Server等。 SQ标准(ANSI/ISO)有: SQL -92:1992年发布的 SQL 语言标准; SQL :1999:1999年发布的 SQL 语言标签; SQL :2003:2003年发布的 SQL 语言标签; 这些标准就与JDK的版本一样,在新的版本 总要有一些语法的变化。不同时期的 数据 库对不同标准做了实 本文翻译至:http://itpro.nikkeibp.co.jp/atcl/column/15/090100207/090100143/?ST=system Variant型变量 = 数组 数组 是可以保存多个值的 “一种变量”。变量是独幢楼房的话, 数组 就是联排别墅。 VBA 数组 名后面加上括号,里面指定 数组 元素的编号。要注意编号是从0开始。 数组 拷贝到別的 数组 时,不是保存到 数组 里,而是保存